ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHPチュートリアルのforeachループで参照を使用する際の注意点

PHP_PHPチュートリアルのforeachループで参照を使用する際の注意点

WBOY
リリース: 2016-07-21 15:32:58
オリジナル
956 人が閲覧しました

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

foreach ($array as &$row) {
$row =explode('/', $row)
}
foreach ($array as $row); ) {
//do something
}

このように書くと、2番目のループにdo somethingを追加した箇所が$rowを出力することになります。最後の要素に到達すると、出力は最後の要素ではなく最後から 2 番目の要素になります

コードをコピーします
コードは次のとおりです: foreach ($array as & $row) { $row =explode('/', $row);
}
unset($row);
foreach ($array as $row) {
//何かをする
}


または、最初のループは次のようになります


コードをコピーします
コードは次のとおりです: foreach ($array as $key => $row) { $array[$key] =explode('/', $row);
}




原理について話しましょう

最初のループは参照を使用し、ループが終了した後、$row は $array 配列の最後の要素を参照します。 PHP では、メモリ空間が参照されると、そのメモリ空間の値がループするたびに新しい値に割り当てられます。つまり、2 番目の foreach ループのときに、このメモリ空間の値が直接変更されます。初めて、$array の最後の要素の値が $array の最初の要素の値に変更され、2 番目のループ中に要素の値が 2 番目の要素の値に変更されます。最後から2番目のループ中に最後から2番目の要素の値であり、最後のループ中に取得された値である必要があります
もちろん、PHPのforループにスコープがある場合、この問題は発生しません...

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

www.bkjia.com

http://www.bkjia.com/PHPjc/322706.html技術記事次のようにコードをコピーします。 foreach ($array as } foreach ($array as $row) { //do something } このように書くと、2 番目のループで論理エラーが発生します。 2 番目のループ...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート