出力結果が期待どおりかどうかを確認してみましょう。結果は次のようになります。
a4
b4
b4
結果が予想と異なります。 これは引用によって引き起こされる問題です。
foreach($arr as &$value) が配列を最後まで走査しても、参照関係は壊れません。これは、$value と $arr の最後の単位 ($arr[2]) の参照と同等です。
foreach($arr2 as $value) に行くと、$value の値は常に配列単位の値とともに変化します。参照関係が壊れていないので、それに応じて $arr[2] の値も変化します。 $arr2 が走査されるまで、$value の値は f であるため、$arr[2] の値も f になります。
この時点で、$arr の値は次のようになります:
Array
(
[0] => a4
[1] => b4
[2] => f
)
これは最後に参照 出力結果が異なります。次に、foreach($arr as $value) に進みます。同様に、$arr[2] の値も、キーが 1 の場合、つまり $arr[1]、$arr[2] と変化します。 ] 値は $arr[1] の値 (b4) にもなります。次に、キー 2 まで繰り返すと、$arr[2] の値は再び $arr[2] の値、つまり b4 になります。出力した結果です。
そのため、foreach で参照を使用するときは注意してください。また、処理後すぐに参照関係を切断することで、後から上記のような事態が起こらないようにすることもできます。
PHP コード
-
foreach($arr as &$value){
-
$value .= ' 4'}
- unset(
$value-
)
http://www.bkjia.com/PHPjc/371504.htmlwww.bkjia.com
true |
http://www.bkjia.com/PHPjc/371504.html
技術記事
$value の前に nbsp; as $value .= '4' ; を追加することで foreach を実行できますが、この使用法もエラーを引き起こしやすく、見つけるのは簡単ではありません。 例を見るとより簡単です: PHP コード ?php...