[閒聊] 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