2014-02-17 76 views
-2

這是我的JSON文件:PHP JSON對象

$json='{ 
    "mainmenu": [ 
    { 
     "title": "Main Menu 1", 
     "url": "some url" 
    }, 
    { 
     "title": "Main Menu 2", 
     "url": "some url2" 
    } 
    ], 
    "submenu": { 
    "my submenu 1": [ 
    { 
     "title": "Sub menu title", 
     "url": "some url" 
    }, 
    { 
     "title": "Sub menu title", 
     "url": "some url" 
    } 
    ], 
    "another submenu":[ 
    { 
     "title": "Sub menu title", 
     "url": "some url" 
    }, 
    { 
     "title": "Sub menu title", 
     "url": "some url" 
    }, 
    { 
     "title": "Sub menu title", 
     "url": "some url" 
    } 
    ] 
} 
}'; 

我能找到主菜單的數量與此:

<?php 
$data = json_decode($json); 
echo sizeof($data->mainmenu); 

但我怎麼能得到子的總數是多少?我怎樣才能得到每個子菜單的名稱?

謝謝。

+0

解碼您的JSON後,您將擁有簡單的多維數組。只需print_r/var_dump即可查看它的外觀。然後建立一個循環來檢查你想要的。 –

+0

@ user1995781你有沒有試過我的口水 –

+0

@SatishSharma嘗試了你的答案。你的答案效果最好!非常感謝您的幫助。 :) – user1995781

回答

1

試試這個

$arr = json_decode($json); 
$arr2 = $arr->submenu; 

$total_submenu = 0; 
foreach($arr2 as $key=>$val) 
{ 
    $total_submenu += sizeof($val); 
} 

echo $total_submenu; // ouput 5 according to your json 
0

使用foreach重複說明$data數組(使用var_dump()查看完整結構)。

1

這將使你子對象的個數:通過submenu數組的索引

echo count((array)$data->submenu)); 

循環:

foreach(array_keys((array)$data->submenu) as $obj) { 
    // $obj will be the name of each submenu 
} 
+0

非常感謝您的回答。現在,我怎樣才能得到子菜單信息?如果直接引用,它將是'$ data-> submenu-> submenu1 [0] - > title;'。如何動態地做到這一點?我嘗試使用'$ data->子菜單[「submenu1」] [0] [「title」]',但它不起作用。 – user1995781

0

我寧願

$count = count(json_decode($json, true));