2016-02-09 4 views
0

Раньше я использовал цикл foreach для доступа к данным в моем объекте JSON, но теперь я вложил массив внутри массива. Вот мой JSONПетля через массив JSON внутри массива

{ 
    "name": "Takeaway Kings", 
    "menu": [ 
    { 
     "starter": [ 
     { 
      "name": "Samosas", 
      "price": 3.5 
     }, 
     { 
      "name": "Chaat", 
      "price": 1.99 
     } 
     ] 
    }, 
    { 
     "dessert": [ 
     { 
      "name": "Kulfi", 
      "price": 2.5 
     }, 
     { 
      "name": "Kheer", 
      "price": 2.99 
     } 
     ] 
    }, 
    { 
     "main": [ 
     { 
      "name": "Lamb Biryani", 
      "price": 4.5 
     }, 
     { 
      "name": "Chicken Tikka Masala", 
      "price": 5.99 
     } 
     ] 
    } 
    ] 
} 

Я пытаюсь Переберите каждый массив внутри меню, а затем перебрать, что в каждом вложенном массиве.

Я ранее использовал это для вывода данных, прежде чем я изменил макет JSONObject.

<?php foreach($restaurant->menu->starter as $starter){ 
       echo '<h3>'.$starter->name.'</h3><br><p>'.$starter->price.'</p><br>'; 

      } ?> 
+0

Если вы показать нам код, который вы до сих пор мы ку ld указывает на то, что нужно изменить. – hherger

+0

@hherger Я ранее напрямую обращался к JSONобъекту, поэтому он не был в php-массиве –

ответ

1

попытка ниже код:

$json = '{ 
    "name": "Takeaway Kings", 
    "menu": [ 
    { 
     "starter": [ 
     { 
      "name": "Samosas", 
      "price": 3.5 
     }, 
     { 
      "name": "Chaat", 
      "price": 1.99 
     } 
     ] 
    }, 
    { 
     "dessert": [ 
     { 
      "name": "Kulfi", 
      "price": 2.5 
     }, 
     { 
      "name": "Kheer", 
      "price": 2.99 
     } 
     ] 
    }, 
    { 
     "main": [ 
     { 
      "name": "Lamb Biryani", 
      "price": 4.5 
     }, 
     { 
      "name": "Chicken Tikka Masala", 
      "price": 5.99 
     } 
     ] 
    } 
    ] 
}'; 

echo '<pre>'; 
$json_arr = json_decode($json, true); 
//print_r(call_user_func_array('array_merge',$json_arr['menu'])); 

echo "name: " . $json_arr['name']; 
echo '<br />'; 
$menu_array = call_user_func_array('array_merge',$json_arr['menu']); 
foreach ($menu_array as $name => $arr) { 
    echo '<br />'; 
    echo "Menu name: " . $name; 
    foreach($arr as $v){ 
     echo '<br />'; 
     echo $v['name'].' : '.$v['price']; 
    } 
} 

выход:

name: Takeaway Kings 
Menu name: starter 
Samosas: 3.5 
Chaat: 1.99 
Menu name: dessert 
Kulfi: 2.5 
Kheer: 2.99 
Menu name: main 
Lamb Biryani: 4.5 
Chicken Tikka Masala: 5.99 
2

Пожалуйста, используйте код ниже для использования внутренних ценностей

$data=json_decode($data); 
    foreach($data->menu as $menu){ 
     foreach($menu as $key => $value){ 
      foreach($value as $key_inner => $value_inner){ 
       echo '<h3>'.$value_inner->name.'</h3><br><p>'.$value_inner->price.'</p><br>'; 
      } 
     } 
    } 
+0

Спасибо, что очень полезен, если бы я хотел сделать приведенный выше пример только для стартера, как бы я это сделал? –

Смежные вопросы