知识大全 foreach使用引用注意的问题
Posted 知
篇首语:讨厌自己明明不甘平凡,却又不好好努力。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 foreach使用引用注意的问题相关的知识,希望对你有一定的参考价值。
foreach 通过在 $value 之前加上 & 很容易就能修改数组的单元 如
PHP代码- foreach($arr as &$value)
- $value = ;
但这个用法也很容易造成错误 而且也不容易找 看例子更直截了当
PHP代码- <?php
- $arr = array( a b c );
- $arr = array( d e f );
- foreach($arr as &$value)//习惯用$value或$val
- $value = ;
- //都处理完毕我们在页面模版输出 首先输出$arr
- foreach($arr as $value)//习惯用$value或$val
- //echo $value;
- //然后再这样输出 $arr;
- foreach($arr as $value)//习惯用$value或$val
- echo $value /n ;
- ?>
大家看看输出的结果是否和期望的一样 这里结果是
a b b
结果和我期待的不一样 这个就是引用引起的问题 在 foreach($arr as &$value) 数组遍历到最后 引用关系并没有断开 这是等同于 $value 与 $arr 的最后一个单元即 $arr[ ] 引用
再到 foreach($arr as $value) $value的值一直随数组单元的值变 由于引用关系没有断开 $arr[ ] 的值也跟着变化 一直到$arr 遍历完 这是$value的值为f 所以$arr[ ]值也为f 这时$arr的值应为
Array( [ ] => a [ ] => b [ ] => f)
这个和我们看到的最终输出结果又不一样 再到 foreach($arr as $value) 同理 这时 $arr[ ]的值也随着 $value 变化 当遍历到key为 即$arr[ ]时 $arr[ ]的值也变成 $arr[ ] 的值 即是 b 然后再遍历到key为 时 $arr[ ]的值又成了 $arr[ ] 的值 也就是 b 了 就是输出时的结果
PHP代码- foreach($arr as &$value)
- $value = ;
- unset($value);
相关参考