引用的疑问

WBOY
Lepaskan: 2016-06-20 12:36:37
asal
780 orang telah melayarinya

<?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?>
Salin selepas log masuk

打印:
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
Salin selepas log masuk
1, 2, 3, 4*1,2,3,1*1,2,3,2*1,2,3,3*1,2,3,31, 2, 3, 3
Salin selepas log masuk
在笫二个 foreach 中,由于 $i 是 $arr 最后一个元素的引用
所以你可以看到 $arr 在循环中是变化的

所以 foreach ($arr as &$i) {} 后,应 unset($i); 以切断 $arr 的引用

明白了,谢谢

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!