2013-07-10 49 views
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 
       ) 
     ) 
) 

如果用戶選擇第一個title元素我保存路徑如下:

$path = "itmes>0>title"; 

我然後爆炸的字符串來獲得單獨的鍵:

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

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

如果我想要手動讀取值,我會使用:

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

但是,當我有他們的密鑰數組時,我將如何構建該查詢?

回答

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

的想法是,你有一個變量「指向」數組中的一個元素,而你通過分支每個關鍵值來更新它。當沒有更多的鍵時,指針指向你的結果。

+0

+1簡短甜蜜,口才和正確。 – Orangepill

+0

非常感謝! –