2014-02-17 54 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));