[闲聊] froeach pass by reference

楼主: gpmm (银色)   2016-10-21 02:35:33
今天在写 foreach 的时候想偷懒用 pass by reference 闪掉指定 index 改值
这件事,就是:
foreach ($array as $k => $v)
$array[$k]['attr'] = 'ok';
改成
foreach ($array as &$v)
$v['attr'] = 'ok';
可是因为很少这样写,想说上网翻一下有没有人踩到什么奇怪的雷,
结果就翻到这一篇 https://goo.gl/bD3ucj
懒得开连结可以直接看以下的 code:
$a = ['zero', 'one', 'two', 'three'];
foreach ($a as &$v) {
}
foreach ($a as $v) {
echo $v.PHP_EOL;
}
输出结果会是:
zero
one
two
two
花了点时间才想通,有点意思 XD
如果要正常化,记得 pass by reference 结束后要 unset ($v) 就可以了
作者: magus (Magus)   2016-10-21 08:35:00
哈哈,值被倒数第二个改了,因为他还在ref第二个XD
作者: knives   2016-10-21 09:06:00
最后一个是不是写错了阿没事,我看花了
作者: Kenqr (function(){})()   2016-10-21 10:41:00

Links booklink

Contact Us: admin [ a t ] ucptt.com