这是我得到的测试和回应。我认为这可能有问题,应该抛出错误或通知但我无法理解为什么被容忍。
<?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* } } }
?>
答案 0 :(得分:5)
这是真正的递归,*RECURSION*
不是真正的错误消息。
这不是问题,因为$test
没有主动重复出现,在这种情况下var_dump
足够聪明,可以在耗尽内存之前停止。
答案 1 :(得分:1)
我猜测检测这样的循环并不重要,如果行为不正确,会在运行时立即显现。
答案 2 :(得分:1)
为什么会有问题? PHP非常聪明,可以识别出一个递归调用的数组。
如果你print_r($GLOBALS)
,也会发生同样的情况,我认为没有任何伤害。
答案 3 :(得分:1)
您正在设置引用,即指针,因此没有真正的递归,没有循环。所以不,它不应该抛出错误。
答案 4 :(得分:0)
实际上*RECURSION*
消息是一条错误消息,它结束了脚本执行。
否则它将执行它直到达到内存限制。