Outdoor Research の php foreach で & および演算子の参照割り当てを使用するときに注意すべき問題

WBOY
リリース: 2016-07-29 08:41:51
オリジナル
930 人が閲覧しました

foreach は、次のように $value の前に & を追加することで配列の要素を簡単に変更できます:
PHP コード

コードをコピーします コードは次のとおりです:


foreach($arr as $value){
$value . = '4';
}


しかし、この使用法はエラーを引き起こしやすく、見つけるのは簡単ではありません。
もっとわかりやすくするために例を見てください:
PHP コード

コードをコピーします コードは次のとおりです:


$arr = array('a','b', 'c');
$arr2 = array('d', 'e', 'f');
foreach($arr as $value){// $value または $val
$value を使用します。 = '4';
}
//ページ テンプレートでの出力が完了したら、まず $arr2
foreach($arr2 as $value){//通常は $value または $val を使用します
//echo $ value;
}
//$arr;
foreach($arr as $value){// $value または $val を使用します
}
?>出力結果が期待どおりかどうかを確認してみましょう。結果は次のとおりです。


コードをコピーします

コードは次のとおりです: XML/HTML コード 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 の値は次のようになります:
XML/HTML コード



コードをコピー

コードは次のとおりです: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'}

;
以上、outdoor Researchのphp foreachで&と演算子の参照代入を使用する際に注意すべき点を、outdoor Researchの内容も含めて紹介しましたので、PHPチュートリアルに興味のある友人の参考になれば幸いです。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート