Ҳисобкунии беҳудаи дарозии массив дар ҳалқа дар 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>';
}
}
?>