-4

ループ内で配列要素を直接変更できるようにするには、$value の前に & を付けます。その場合、値はhttp://php.net/manual/en/control-structures.foreach.phpからの参照によって割り当てられます。

 $arr = array(1, 2, 3, 4); 
 foreach ($arr as &$value) {
    echo $value; 
 }

 $arr = array(1, 2, 3, 4);
 foreach ($arr as $value) {
   echo $value;
 }

どちらの場合も、1234 を出力します。$value に & を追加すると、実際には何が行われるのでしょうか? どんな助けでも大歓迎です。ありがとう!

4

5 に答える 5

6

$value を参照渡しすることを示します。foreach ループ内で $value を変更すると、それに応じて配列が変更されます。

それがないと、値によって渡され、$value に加えた変更は foreach ループ内でのみ適用されます。

于 2013-05-09T18:51:24.243 に答える
0

これは変数への参照であり、foreach ループでの主な用途は、$value 変数を変更できることであり、その方法で配列自体も変更されます。

于 2013-05-09T18:54:31.940 に答える
0

値を参照しているだけの場合は、投稿したケースに大きな違いはありません。変数を値で参照する場合と参照で参照する場合の違いを説明する最も簡単な例は次のとおりです。

$a = 1;
$b = &$a;
$b++;
print $a;  // 2

$a が 2 になっていることに気付くでしょう。これは、$b が $aへのポインターであるためです。アンパサンドを前に付けなかった場合、$a は 1 のままです。

$a = 1;
$b = $a;
$b++;
print $a;  // 1

HTH

于 2013-05-09T18:54:45.960 に答える
0

通常、すべての関数はそのパラメーターのコピーを作成し、それらを操作し、それらを返さない場合は「削除」します (これが発生するタイミングは言語によって異なります)。

パラメータとして関数を実行すると、&VARIABLEその変数を参照によって追加したことを意味し、実際、この関数は変数を返さなくてもその変数を変更できます。

于 2013-05-09T18:54:57.843 に答える