PHP传引用/作用域 问题
生活随笔
收集整理的這篇文章主要介紹了
PHP传引用/作用域 问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
?
$arr = [1,2,3];foreach($arr as &$v) {//nothing todo. }foreach($arr as $v) {//nothing todo. }var_export($arr);//output:array(0=>1,1=>2,2=>2)?
?
由于傳引用的原因, 第一個foreach 結束后, 變量$v 指向 $arr[2] 的地址?
?
由于foreach 不存在 塊級作用域, 因此 第一個 foreach 結束后, 變量$v 依然存在(切指向$arr[2]的內存地址)
?
因此, 在第二個foreach中:
第一次循環:
$arr[2] = $v = $arr[0];第二次循環:
$arr[2] = $v = $arr[1];第三次循環:
$arr[2] = $v = $arr[2]; // 即 $arr[2] = $arr[2] ; 由于第二次循環中 $arr[2] 被賦值 $arr[1] 即 2, 因此 $arr[2] = 2?
?
?
?
為避免 此類問題對程序帶來的影響, 應當 在? 傳引用 循環結束后, 使用:
unset($v);?
?
?
?
?
?
?
?
?
?
1
轉載于:https://www.cnblogs.com/Skate0rDie/p/11236216.html
總結
以上是生活随笔為你收集整理的PHP传引用/作用域 问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL SERVER 2012 OBJE
- 下一篇: Android 小项目之--Mini音乐