PHP цикліндегі массив ұзындығын қажетсіз есептеу
Сандары бар белгілі бір массив берілген делік:
<?php
$arr = [1, 2, 3, 4, 5];
?>
Массивтің әрбір элементі квадратқа шығарылсын. Яғни, бізде сандарының квадраттары бар бірдей $arr массиві қалуы керек.
Бұл жағдайда foreach циклы жарамсыз,
ал массив бойынша қарапайым for циклы қажет,
мынанымен:
<?php
$arr = [1, 2, 3, 4, 5];
for ($i = 0; $i < count($arr); $i++) {
$arr[$i] = $arr[$i] * $arr[$i]; // массивтің әрбір элеменін өзгертеміз
}
var_dump($arr);
?>
Бұл кодта не дұрыс емес? Мәселе мынада,
count($arr) циклдің әрбір итерациясында мағынасыз түрде есептелетіндігінде! Неліктен,
себебі циклдегі массивтің ұзындығы өзгермейді, солай емес пе?
Оңтайландыру үшін массив ұзындығын есептеуді бөлек айнымалыға шығарайық:
<?php
$arr = [1, 2, 3, 4, 5];
$len = count($arr); // оңтайландырамыз
for ($i = 1; $i < $len; $i++) {
$arr[$i] = $arr[$i] * $arr[$i];
}
var_dump($arr);
?>
Төмендегі кодты оңтайландырыңыз:
<?php
$arr = [1, 2, 2, 4, 5];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i - 1] === $arr[$i]) {
echo $arr[$i] . '<br>';
}
}
?>