参照による配列の反復には注意してください

要素を参照して配列を反復処理するときに、非常に不愉快なPHP機能(&を使用した各構成)を見つけました。



自分で見てください:

$test = array('1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5); print_r($test); foreach ($test as $key => $value) { echo "{$key} => {$value}\n"; }
      
      







期待したものが得られます。

 Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 ) 1 => 1 2 => 2 3 => 3 4 => 4 5 => 5
      
      







ただし、参照によって反復を追加する価値があります。

 $test = array('1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5); foreach ($test AS &$value) { // - .        } print_r($test); foreach ($test as $key => $value) { echo "{$key} => {$value}\n"; }
      
      







...予期しない結果を得る方法:

 Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 ) 1 => 1 2 => 2 3 => 3 4 => 4 5 => <b>4</b>
      
      







私はわき柱が何であるかを完全には理解していません、それは何らかの形で最初のループを出た後の最後の要素へのリンクが$ valueにあるという事実に関連しています。 この動作を回避するには、2つの方法があります。2番目のループも参照で繰り返すか、$値の代わりに別の名前を使用する必要があります。



All Articles