Viittaukset foreach-silmukassa PHP:ssä
Kun työskentelet foreach-silmukan kanssa,
elementtimuuttujan muuttaminen
ei johda itse taulukon muutoksiin:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
$elem++;
}
var_dump($arr); // ei muutu
?>
Haluttuun tulokseen voidaan kuitenkin päästä, jos esitellään elementtien muuttuja viittauksena. Tällöin tämän muuttujan muutokset johtavat muutoksiin taulukossa:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem++;
}
var_dump($arr); // muuttuu
?>
Korjaa seuraava koodi niin, että se toimii suunnitellulla tavalla:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem = sqrt($elem);
}
var_dump($arr);
?>
Korjaa seuraava koodi niin, että se toimii suunnitellulla tavalla:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem ** 2;
}
var_dump($arr);
?>