代码之家  ›  专栏  ›  技术社区  ›  Elzo Valugi

PHP数组递归不应该引发错误吗?

  •  7
  • Elzo Valugi  · 技术社区  · 15 年前

    这是我得到的测试和响应。我认为这可能有问题,应该抛出一个错误或通知,但我不明白为什么被容忍。

    <?php
        $test = array( 0 => 'test', 1=> &$test );
        var_dump( $test );
    
        // array(2) { [0]=> string(4) "test" [1]=> &array(2) { [0]=> string(4) "test" [1]=> &array(2) { [0]=> string(4) "test" [1]=> *RECURSION* } } }
    ?>
    
    5 回复  |  直到 15 年前
        1
  •  5
  •   aercolino    15 年前

    它是真正的递归,并且 *RECURSION* 不是真正的错误消息。 这不是问题,因为 $test 不是主动重复出现的,在这种情况下 var_dump 足够聪明,在耗尽记忆之前停止。

        2
  •  1
  •   pauljwilliams    15 年前

    我想检测这样一个循环是非常重要的,如果行为不正确,那么在运行时就会很明显。

        3
  •  1
  •   Alix Axel    15 年前

    为什么会有问题?PHP足够聪明,可以识别一个数组正在被递归调用。

    如果你 print_r($GLOBALS) 我看这没什么害处。

        4
  •  1
  •   Andy E    15 年前

    您正在设置一个引用,也就是说,一个指针,这样就没有真正的递归,也没有循环。所以不,它不应该抛出错误。

        5
  •  0
  •   streetparade    15 年前

    实际的 *RECURSION* 消息是一条错误消息,结束脚本执行。 否则它将执行它直到达到内存限制。