されている、あなた寿:
$some_array = array(1, 2, 3);
function test($a) {
foreach ($a as $k => &$v) {
$v = 'Hello!';
};
return $a;
};
$result = test($some_array);
var_dump($result); // array('Hello!', 'Hello!', 'Hello!');
しかし、とldはthe docsをお読みください。デフォルトでは
(関数内の引数の値が変更された場合、それは関数の外部で変更されないように)、関数の引数は値によって渡されます。関数が引数を変更できるようにするには、関数を参照渡しする必要があります。
関数の引数を常に参照渡しにするには、関数定義の引数名の前にアンパサンド(&)を付加します。
foreach
構築also states上のドキュメント:
直接&
で$value
に先行するループ内の配列要素を変更できるようにするために。その場合、値は参照によって割り当てられます。
あなたは参照渡しすることを選択すると、直接(&$v
)の値を変更するか、値渡しすることもできますが、この場合には、あなたは$k
の要素のキーを使用して、配列の値を変更する必要があります。
foreach ($a as $k => $v)
{
$a[$k] = 'Hello!';
};
複雑な配列に使いやすい別の方法は、元のパラメータ配列を新しい値で設定することです。あなたは現在の要素のキーを持っています。これを 'foreach'で行うのは安全です。 https://eval.in/726978を参照してください。すなわち、参照なしで同じ結果を与える。あなたは要素キーを知る必要があります。同じ効果を得るための別の方法です。 –
ありがとう@ライアンヴィンセント、非常に明確な答え! – AmintaCode