【发布时间】:2013-01-22 23:41:59
【问题描述】:
在 PHP 中检查数组是否递归的最佳方法是什么?
给定以下代码:
<?php
$myarray = array('test',123);
$myarray[] = &$myarray;
print_r($myarray);
?>
print_r() 到达第三个时会显示 RECURSION 数组的元素。
似乎没有其他方法可以扫描数组以查找 递归引用,所以如果你需要检查它们,你必须 使用 print_r() 及其第二个参数来捕获输出并查看 递归这个词。
有没有更优雅的检查方式?
PS。这就是我使用 regex 和 print_r() 检查和获取递归数组键的方式
$pattern = '/\n \[(\w+)\] => Array\s+\*RECURSION\*/';
preg_match_all($pattern, print_r($value, TRUE), $matches);
$recursiveKeys = array_unique($matches[1]);
谢谢
【问题讨论】:
-
RECURSION 术语不是仅在它获得 3 个元素深度时才显示,而不是在它引用自身时显示吗?另外,我很确定这是 php.ini 中的可配置深度
-
我使用 spl_object_hash() 对对象执行此操作,但对于数组我不知道。