2014-02-17 2 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 Вы пробовали мой anwer –

+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

Это даст вам количество объектов подменю:

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

Переберите индексов 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)); 
Смежные вопросы