Uboreshaji wa Kurudia Operesheni Nzito katika PHP
Katika somo lililopita, wito wa mara kwa mara wa kazi kwa hakika inachukua muda mchachi sana na uboreshaji wetu utaokoa si sana. Hata hivyo, kutakuwa na tabaka kubwa zaidi, ikiwa tutafanya mara kadhaa wito wa kazi "nzito" ambayo initekeleza kwa muda wa kutosha.
Hebu, kwa mfano, tunayo kazi ambayo inapata vigawanyiko vya nambari:
<?php
function getDivisors($num) {
$result = [];
for ($i = 1; $i <= $num; $i++) {
if ($num % $i == 0) {
$result[] = $i;
}
}
return $result;
}
?>
Ni wazi, kwamba kazi hii ni "nzito" ya kutosha. Kwa hivyo wazo baya litakuwa kuandika msimbo kama huu:
<?php
$num = 123456;
if (array_sum(getDivisors($num)) >= 10 and array_sum(getDivisors($num)) <= 100) {
} else {
}
?>
Ni bora, bila shaka, kutekeleza operesheni "nzito" mara moja na kuhifadhi matokeo kwenye kutofautisha, kisha kutumia kutofautisha hiyo katika sehemu zinazohitajika:
<?php
$num = 123456;
$sum = array_sum(getDivisors($num));
if ($sum >= 10 and $sum <= 100) {
} else {
}
?>
Boresha msimbo ulio hapa chini:
<?php
$num = 1233456789;
if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) {
echo 'kweli';
} else {
echo 'si kweli';
}
function getSumSquare($num) {
$digits = explode('', $num);
$sum = 0;
foreach ($digits as $digit) {
$sum += $digit * $digit;
}
return $digit;
}
?>