ホームページ  >  記事  >  バックエンド開発  >  引用された質問

引用された質問

WBOY
WBOYオリジナル
2016-06-20 12:36:37788ブラウズ

<?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); する必要があります

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。