PHP-də tsiklik əməliyyatların optimallaşdırılması
Hətta yüngül bir əməliyyat belə, tsikldə çoxsaylı təkrarlandıqda, çoxlu resurs sərf edə bilər.
Gəlin bir nümunəyə baxaq. Tutaq ki, bizə müəyyən bir massiv verilib:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
Gəlin bu massivin elementlərinin ortasını tapaq. Bunun üçün elementlərin cəmini tapıb onu sayına bölmək lazımdır. Tutaq ki, müəyyən bir proqramçı bu problemi artıq aşağıdakı kimi həll edib:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
Gəlin belə bir həllin problemlərini nəzərdən keçirək. Texniki cəhətdən kod düzgün işləyir və düzgün cavab verir. Məsələ ondadır ki, riyazi cəhətdən həm bütün cəmi sayına bölmək, həm də hər bir toplananı sayına bölmək düzgündür.
Ancaq başqa bir problem yaranır. Məsələ ondadır ki, biz bölmə əməliyyatını massivdəki elementlər qədər dəfə yerinə yetirəcəyik. Və belə çıxır ki, biz çoxsaylı artıq əməliyyatlar edirik, çünki bölməni sona saxlayıb - bir dəfə, tapılmış bütün cəmi bölmək olardı.
Gəlin kodumuzu optimallaşdıraq:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Aşağıda verilmiş kodu optimallaşdırın:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>