在PHP中处理其他程序员的复杂数组

时间:2010-11-07 16:03:16

标签: php arrays oop

我正在维护一个OO PHP应用程序,它将所有内容加载到$ this数组。当我在$ this上执行var转储以了解如何访问值时,我得到了几十页的输出。寻找我需要的数组元素是非常耗时的

例如,如果我想查找Customer Territory的存储位置,我必须使用print_r或var_dump并在输出处盯着[编辑:并搜索]]来计算数组的层次结构。直到我找到路径。

例如: $ this-> Billing-> Cst->记录['Territory']

有没有更好的方法来实现这一点,或者我可以使用的一些工具/技术。例如,有没有快速的方法直接在整个数组中找到变量['Territory']的路径?

4 个答案:

答案 0 :(得分:4)

Krumo是一个图形“var_dump”工具,可以使导航更容易一些。查看项目页面上的“示例”部分。

要在多维数组中搜索,this SO question可能对您有所帮助。

答案 1 :(得分:1)

您可以在输出上执行ctrl + F而不是盯着它吗?

首先从ctr + F开始:“客户”,“地区”以及与您搜索的任何内容相关的所有其他名称。

答案 2 :(得分:1)

function findInTree($var, $words) {
    $words = explode(' ', strtolower($words));
    $path = array();
    $depth = 0;
    $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($var), RecursiveIteratorIterator::SELF_FIRST);
    foreach ($iterator as $key => $value) {
        if ($iterator->getDepth() < $depth) {
            unset($path[$depth]);
        }
        $depth = $iterator->getDepth();
        $path[$depth] = $key;

        if (is_string($key) && in_array(strtolower($key), $words)) {
            echo '<pre>', implode(' -&gt; ', $path), '</pre>';
        }
    }
}

findInTree($this, 'Customer Territory');

此功能将遍历您的对象并查找任何给定的单词作为键。

答案 3 :(得分:0)

FirePHP/Firebug可以为您提供$this及其属性的详细结构视图。