PHP-də artıq dövr təkrarlarının optimallaşdırılması
Aşağıdakı kodda bir proqramçı massivdə 3 ədədinin
olub-olmadığını yoxlayır:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$exists = false;
foreach ($arr as $elem) {
if ($elem == 3) {
$exists = true;
}
}
var_dump($exists);
?>
Onun həllində nə səhvdir? Görünür ki, dövrdə heç bir
artıq əməliyyat yerinə yetirilmir. Lakin problem ondadır ki,
3 ədədinin massivdə olduğu müəyyən edildikdən sonra -
dövr yenə də massivin sonuna qədər fırlanmağa davam edir.
Ən səmərəsiz hal, 3 ədədi massivin əvvəlində tapılsa,
özü isə məsələn, 1000 element uzunluğunda olsa.
Beləliklə, minlərlə faydasız artıq dövr təkrarı baş verər!
Optimal deyil.
Kodu optimallaşdıraq, dövrü vaxtında dayandıraraq:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$exists = false;
foreach ($arr as $elem) {
if ($elem == 3) {
$exists = true;
break;
}
}
var_dump($exists);
?>
Aşağıdakı kod cəmin 10-dan çox olması üçün
massivin neçə elementinin toplanması lazım olduğunu
hesablayır. Optimallaşdırmanı yerinə yetirin:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$sum = 0;
$i = 1;
foreach ($arr as $elem) {
$sum += $elem;
if ($sum <= 10) {
$i++;
}
}
echo $i;
?>
Aşağıdakı kod verilmiş intervaldan cüt ədədləri çap edir. Optimallaşdırmanı yerinə yetirin:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0) {
echo $i;
}
}
?>
Aşağıdakı kod eyni zamanda həm 2-ə, həm də
3-ə bölünən ədədləri çap edir. Optimallaşdırmanı
yerinə yetirin:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0 and $i % 3 === 0) {
echo $i;
}
}
?>