在PHP中浏览巨大的嵌套数组

时间:2013-02-18 19:42:53

标签: php multidimensional-array

这可能是一个简单的问题,但我正在转储一个绝对巨大的对象($ this),我需要到达数组中的特定点

$this->varA->varB->varC->varD->what_I_need

我知道我需要的变量就在那里,我可以使用ctrl + f来查找它,但是数组是如此嵌套,以至于我不知道如何在PHP中使用它。关于最佳方法是什么的任何想法?

1 个答案:

答案 0 :(得分:1)

不要犹豫从框架中查看库。

[CakePHP]创建了一个很棒的类,它能够使用点语法表示法中的字符串导航到数组。这个库被称为Hash,只需查看它。

如果你有这个:

$var = array(
    'Element1' => array(
        'First_rule' => true,
        'Second_rule' => false,
    ),
    'Element2' => array(
        'First_rule' => 'none',
        'Other_rule' => 'otherone',
    ),
);

您只需使用字符串即可从此数组中提取数据。

您只能从特定元素中获取一个信息:

$extracted_other_rule = Hash::extract($var, 'Element2.Other_rule');

返回:

Array
(
    [0] => otherone
)

或者您甚至可以从包含它的数组中的任何元素中提取所有“First_rule”索引:

$extracted_rules = Hash::extract($var, '{s}.First_rule');

返回:

Array
(
    [0] => 1
    [1] => none
)

如果您需要浏览具有未定义深度的大型数组,只需创建一个递归函数,将名为“$ path”的字符串传递给递归操作。我做了一个很大的功能,将一个完整的XML流解析成一个JSON字符串,所有的密钥都用我自己的规则解析,并带有一系列参数。