Silmukka ja return PHP:ssä
Oletetaan, että meillä on funktio, joka palauttaa lukujen
summan
1:stä 5:een:
<?php
function func() {
$sum = 0;
for ($i = 1; $i <= 5; $i++) {
$sum += $i;
}
return $sum;
}
$res = func();
echo $res; // tulostaa 15
?>
Oletetaan nyt, että sijoitamme return:n
silmukan sisään, näin:
<?php
function func() {
$sum = 0;
for ($i = 1; $i <= 5; $i++) {
$sum += $i;
return $sum;
}
}
$res = func();
echo $res;
?>
Tässä tapauksessa silmukka pyörähtää vain yhden
iteraation verran ja funktiosta (ja samalla silmukasta) poistutaan automaattisesti.
Yhden silmukan iteraation aikana muuttujaan $sum ehtii
tulla vain luku 1, eikä koko tarvittava summa.
Mitä seuraava koodi tulostaa näytölle suorituksen jälkeen:
<?php
function func($num) {
$sum = 0;
for ($i = 1; $i <= $num; $i++) {
$sum += $i;
return $sum;
}
}
echo func(5);
?>
Selitä miksi.
Mitä kirjoittaja yritti tehdä tällä koodilla? Korjaa kirjoittajan virhe.