0

我正在编写一个脚本,该脚本允许用户加载远程 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']

但是,当我有一组它们的键时,我将如何构建该查询?

4

1 回答 1

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);

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

于 2013-07-10T20:13:01.860 回答