コードをコピーします コードは次のとおりです:
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
truehttp://www.bkjia.com/PHPjc/322706.html技術記事次のようにコードをコピーします。 foreach ($array as } foreach ($array as $row) { //do something } このように書くと、2 番目のループで論理エラーが発生します。 2 番目のループ...