簡體   English   中英

需要幫助來調試PHP代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM