Odkazy v foreach v PHP
Pri práci s cyklom foreach
zmena premennej pre prvky
nevedie k zmenám v samotnom poli:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
$elem++;
}
var_dump($arr); // nezmení sa
?>
Avšak, požadovaný efekt je možné dosiahnuť, ak deklarujeme premennú pre prvky odkazom. V tomto prípade zmeny tejto premennej povedú k zmenám v poli:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem++;
}
var_dump($arr); // zmení sa
?>
Opravte nasledujúci kód tak, aby fungoval podľa zámery:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem = sqrt($elem);
}
var_dump($arr);
?>
Opravte nasledujúci kód tak, aby fungoval podľa zámery:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem ** 2;
}
var_dump($arr);
?>