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>';
}
}
?>