PHPにおけるforeachの参照渡し
foreachループで作業する場合、
要素の変数を変更しても
元の配列自体は変更されません:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
$elem++;
}
var_dump($arr); // 変更されない
?>
しかし、要素の変数を参照として宣言すれば、 目的の効果を得ることができます。 この場合、この変数への変更は 配列内の変更につながります:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem++;
}
var_dump($arr); // 変更される
?>
次のコードを意図通りに動作するように 修正してください:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem = sqrt($elem);
}
var_dump($arr);
?>
次のコードを意図通りに動作するように 修正してください:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem ** 2;
}
var_dump($arr);
?>