Kukokotoa Urefu wa Safu Bila Faida Katika Kitanzi PHP
Acha tuwe na safu fulani ya nambari:
<?php
$arr = [1, 2, 3, 4, 5];
?>
Wacha tubadilishe kila kipengele cha safu
kiwe kimoja kwa mraba. Hii inamaanisha safu
ile ile $arr itabaki, lakini kwa
nambari zilizo mraba.
Katika hali kama hii, kitanzi foreach hakifai,
bali kinachohitajika ni kitanzi cha kawaida for kwa safu,
kama ifuatavyo:
<?php
$arr = [1, 2, 3, 4, 5];
for ($i = 0; $i < count($arr); $i++) {
$arr[$i] = $arr[$i] * $arr[$i]; // kubadilisha kila kipengele cha safu
}
var_dump($arr);
?>
Nini kimeshakosekana katika msimbo huu? Shida ni
kwamba count($arr) itakokotolewa
kila wakati kitanzi kinaporudia! Kwa nini,
kwani urefu wa safu haubadiliki wakati wa kitanzi, sivyo?
Ili kuboresha, wacha tuweke ukokotoaji wa urefu wa safu kwenye tofauti tofauti:
<?php
$arr = [1, 2, 3, 4, 5];
$len = count($arr); // kuboresha
for ($i = 1; $i < $len; $i++) {
$arr[$i] = $arr[$i] * $arr[$i];
}
var_dump($arr);
?>
Boresha msimbo ulio hapa chini:
<?php
$arr = [1, 2, 2, 4, 5];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i - 1] === $arr[$i]) {
echo $arr[$i] . '<br>';
}
}
?>