[英]Need a help to debug PHP code
我有如下代碼,
<?php
$a = [1,2,3];
foreach($a as &$val) {
$val = $val + 1;
}
foreach($a as $val) {
$val = $val - 1;
}
var_dump($a);
// output 2,3,1
?>
我輸出2,3,1作為最終數組而不是2,3,4我無法理解php是如何解釋這段代碼的,有誰能幫我理解事情是怎么回事?
您需要在第一個foreach()
的引用上調用unset()
foreach()
以獲得預期的行為:
$a = [1, 2, 3];
foreach($a as &$val)
{
$val = $val + 1;
}
unset($val);
// $a = [2, 3, 4];
請參閱文檔中的注釋:
即使在foreach循環之后,
$value
和最后一個數組元素的引用仍然存在。 建議通過unset()
銷毀它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.