ホームページ  >  記事  >  バックエンド開発  >  php で & (and 演算子) 参照割り当てを使用する場合に注意すべき問題 foreach_PHP チュートリアル

php で & (and 演算子) 参照割り当てを使用する場合に注意すべき問題 foreach_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:40:48854ブラウズ

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 を使用します
echo $value, "n"; >


出力結果が期待どおりかどうかを確認してみましょう。結果は次のとおりです:


コードをコピーします コードは次のとおりです:
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'
unset($value);



http://www.bkjia.com/PHPjc/321277.html
www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/321277.html技術記事 $value の前に } を追加することで foreach を使用できますが、この使用法もエラーが発生しやすく、見つけるのが簡単ではありません。 例を見るとより簡単です: PHP コード コードをコピーする コードは次のとおりです: ?php $arr...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。