不应该PHP数组递归抛出错误?

时间:2010-01-14 15:23:28

标签: php arrays recursion pass-by-reference

这是我得到的测试和回应。我认为这可能有问题,应该抛出错误或通知但我无法理解为什么被容忍。

<?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 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

我猜测检测这样的循环并不重要,如果行为不正确,会在运行时立即显现。

答案 2 :(得分:1)

为什么会有问题? PHP非常聪明,可以识别出一个递归调用的数组。

如果你print_r($GLOBALS),也会发生同样的情况,我认为没有任何伤害。

答案 3 :(得分:1)

您正在设置引用,即指针,因此没有真正的递归,没有循环。所以不,它不应该抛出错误。

答案 4 :(得分:0)

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