引用された質問

WBOY
リリース: 2016-06-20 12:36:37
オリジナル
842 人が閲覧しました

<?php$arr = ['1', '2', '3', '4'];foreach ($arr as &$i) {}echo implode($arr, ', ')."\n";  //1,2,3,4foreach ($arr as $i) {}echo implode($arr, ', ')."\n";   //1,2,3,3?>
ログイン後にコピー

Print:
1, 2, 3, 4
1, 2, 3, 3
PHP マニュアルのコメントでこれを見ましたが、本当にできません理由を理解してください、神様が答えてください。


ディスカッションへの返信 (解決策)

$arr = ['1', '2', '3', '4']; foreach ($arr as &$i) {}echo implode($arr, ', ')."\n";  //1,2,3,4 foreach ($arr as $i) {  echo '*' . join(',', $arr), PHP_EOL;}echo implode($arr, ', ')."\n";   //1,2,3,3
ログイン後にコピー
1, 2, 3, 4*1,2,3,1*1,2,3,2*1,2,3,3*1,2,3,31, 2, 3, 3
ログイン後にコピー
2 番目の foreach では、$i が $arr
の最後の要素への参照であるため、$arr がループ内で変更されることがわかります

つまり foreach ($arr as After &$) i) {}、$arr の参照を切断するには、unset($i); する必要があります

分かりました、ありがとう

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