与其他程序员打交道';PHP中的复杂数组

与其他程序员打交道';PHP中的复杂数组,php,arrays,oop,Php,Arrays,Oop,我正在维护一个OO PHP应用程序,它将所有内容加载到此数组中。当我对$this进行var转储以了解如何访问一个值时,我得到了几十页的输出。查找我需要的数组元素非常耗时 例如,如果我想找到存储Customer Territory的位置,我必须使用print\r或var\u dump并在输出处开始[编辑:并搜索]]直到我找到路径为止,来确定数组的继承权 例如: $this->Billing->Cst->Record['Territory'] 有没有更好的方法,或者我可以使用的一些工具/技术。例如,

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

例如,如果我想找到存储Customer Territory的位置,我必须使用print\r或var\u dump并在输出处开始[编辑:并搜索]]直到我找到路径为止,来确定数组的继承权

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

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

是一个图形化的“var_dump”工具,可以使导航变得更简单一些。查看项目页面上的“示例”部分


对于在多维数组中搜索,可能会对您有所帮助。

您可能可以对输出执行ctr+F而不是盯着它看

只需从ctr+F开始:“客户”、“地区”和所有其他与搜索内容相关的名称。

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

函数findInTree($var,$words){
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');
$words=爆炸(“”,strtolower($words)); $path=array(); $depth=0; $iterator=new recursiveiterator(new RecursiveArrayIterator($var),recursiveiterator::SELF_FIRST); foreach($key=>$value的迭代器){ 如果($iterator->getDepth()<$depth){ 未设置($path[$depth]); } $depth=$iterator->getDepth(); $path[$depth]=$key; if(is_string($key)和&in_数组(strtolower($key),$words)){ 回声“”,内爆('-',$path),''; } } } findInTree(‘客户区域’);

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

您是否考虑过使用grep?奥利他的问题是找到访问元素的正确“地址”,而不是找到元素本身(正如您所说,使用grep很容易)。谢谢。我找到了路。看起来是这样的。。krumo($this->Billing->Tables['Payment']->Tables['Customer']->Tables['Address']->Item['ProvinceStateId']);我没有;“我不知道你可以像这样混合对象和数组。@汉克,我的天哪。您肯定需要一个工具来处理此类数据!:)