需要帮助来调试PHP代码

时间:2018-05-12 17:45:51

标签: php

我有以下代码,

 <?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如何解释这段代码,任何人都可以帮助我理解事情的进展吗? / p>

1 个答案:

答案 0 :(得分:5)

您需要在第一个foreach()中的引用上调用$a = [1, 2, 3]; foreach($a as &$val) { $val = $val + 1; } unset($val); // $a = [2, 3, 4]; 以获得预期的行为:

$value

请参阅documentation中的注释:

  

unset()的引用和最后一个数组元素仍然保留在   foreach循环。建议按{{1}}销毁它。