我正在开发一个脚本,允许用户加载远程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']
但是当我有一组密钥时,我将如何构建该查询?
答案 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);
这个想法是你有一个“指向”数组中元素的变量,你可以通过分支每个键值来更新它。当没有其他键时,指针指向您的结果。