2011-09-29 14 views
3

我有以下的陣列,我無法弄清楚如何擺脫它的任何值,這是數組:如何用php讀取json解碼數組?

Array 
(
    [0] => stdClass Object 
     (
      [aure] => test 
      [menu] => stdClass Object 
       (
        [pizza] => stdClass Object 
         (
          [Tomato & Cheese] => stdClass Object 
           (
            [small] => 5.50 
            [large] => 9.75 
           ) 

          [onion] => stdClass Object 
           (
            [small] => 5.50 
            [large] => 9.75 
           ) 

         ) 

        [Special Dinners] => stdClass Object 
         (
          [Chicken Wings Dinner] => stdClass Object 
           (
            [price] => 15.80 
           ) 

          [onion] => stdClass Object 
           (
            [small] => 5.50 
            [large] => 9.75 
           ) 

         ) 

       ) 

     ) 

) 

將你能夠給我的,我怎麼能得到一個例子價格爲一個小番茄&奶酪披薩?

回答

4
$array[0]->menu->pizza->{"Tomato & Cheese"}->small; 

我已經使用大括號,因爲我不能讓「番茄&奶酪」沒有他們(他們有空格)

這會給你所有的比薩餅

$pizzas = (array) $array[0]->menu->pizza; 
foreach($pizzas as $pizzaname => $choices){ 
    echo $pizzaname." (small) is for ".$choices->small."<br />"; 
    echo $pizzaname." (large) is for ".$choices->large."<br />"; 
} 
+0

壩看起來容易:),謝謝,有沒有辦法做到這一點不知道比薩餅 – aurel

+0

@aurel的名字:是的。我將編輯我的答案 – genesis

+0

@aurel:現在編輯 – genesis

1

如果您的名字不僅是字母數字,請考慮將json_decodeassoc參數設置爲true,以獲取嵌套字典而不是對象。

但是,你仍然可以訪問陌生成員名稱,使用的語法如下:

echo 'Large t&c: ' . jsonArray[0]->menu->pizza->{'Tomato & Cheese'}->large; 
+0

我需要查看「assoc」這個,因爲我不知道那是什麼。如果不知道「菜單」和「披薩」的名稱,有沒有辦法獲得相同的結果? – aurel

+0

@aurel Yup。將'assoc'設置爲true允許你使用所有的[數組函數](http://php.net/manual/en/ref.array.php),你可以簡單地迭代它們,例如嵌套for循環。 – phihag

+0

謝謝,相當有用 – aurel