PHPda Ogʻir Operatsiyalarni Takrorlashni Optimallashtirish
Oldingi darsda funktsiyalarni takroriy chaqirishlar aslida juda oz vaqt oladi va bizning optimallashtirishimiz juda koʻp tejamaydi. Biroq, agar biz bir necha marta "ogʻir" funktsiyani chaqirsak, bu juda yomon boʻladi, chunki u aniq vaqt talab qiladi.
Masalan, faraz qilaylik, bizda sonning boʻluvchilarini topadigan funktsiya bor:
<?php
function getDivisors($num) {
$result = [];
for ($i = 1; $i <= $num; $i++) {
if ($num % $i == 0) {
$result[] = $i;
}
}
return $result;
}
?>
Shubhasiz, bu funktsiya ancha "ogʻir". Shuning uchun quyidagi kodni yozish yomon fikr boʻlardi:
<?php
$num = 123456;
if (array_sum(getDivisors($num)) >= 10 and array_sum(getDivisors($num)) <= 100) {
} else {
}
?>
Albatta, "ogʻir" operatsiyani bajarish yaxshiroqdir bir marta va natijani oʻzgaruvchiga yozing, keyin esa kerakli joylarda ushbu oʻzgaruvchidan foydalaning joylar:
<?php
$num = 123456;
$sum = array_sum(getDivisors($num));
if ($sum >= 10 and $sum <= 100) {
} else {
}
?>
Quyida keltirilgan kodni optimallashtiring:
<?php
$num = 1233456789;
if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) {
echo 'rost';
} else {
echo 'rost emas';
}
function getSumSquare($num) {
$digits = explode('', $num);
$sum = 0;
foreach ($digits as $digit) {
$sum += $digit * $digit;
}
return $digit;
}
?>