通过键数组在多维数组中查找值

时间:2013-07-10 20:07:34

标签: php multidimensional-array

我正在开发一个脚本,允许用户加载远程XML文件并让他们选择一个元素。然后,我需要能够在以后检索该元素的值。 XML会定期更新,我希望每次都显示更新值。

到目前为止,我将XML转换为多维数组,向用户显示元素及其值,当他们选择元素时,我保存了多维数组的键。

例如,如果我们有以下数组:

  Array
(
    [responsecode] => 0
    [message] => 
    [items] => Array
        (
            [0] => Array
                (
                    [title] => Example1
                    [content] => This is the first message
                    [date] => 00/00/00
                )

            [1] => Array
                (
                    [title] => Example2
                    [content] => This is the second message
                    [date] => 00/00/00
                )
       )
)

如果用户选择第一个标题元素,我按如下方式保存路径:

$path = "itmes>0>title";

然后我爆炸字符串以获得单独的键:

$keys = explode(">", $path);

Array
    (
        [0] => items
        [1] => 0
        [2] => title
    )

如果我想手动读取值,我会使用:

array['items']['0']['title']

但是当我有一组密钥时,我将如何构建该查询?

1 个答案:

答案 0 :(得分:2)

只需写一个循环:

function extract_value(array $array, array $keys) {
    foreach($keys as $key) {
        if (!isset($array[$key])) return null;
        $array = $array[$key];
    }

    return $array;
}

你可以在

中使用它
$result = extract_value($data, $keys);

这个想法是你有一个“指向”数组中元素的变量,你可以通过分支每个键值来更新它。当没有其他键时,指针指向您的结果。