2012-04-14 6 views
12

это мой массив в PHP $ отелейPHP многомерный массив получить значения

Array 
(
    [0] => Array 
     (
     [hotel_name] => Name 
     [info] => info 
     [rooms] => Array 
      (
       [0] => Array 
        (
         [room_name] => name 
         [beds] => 2 
         [boards] => Array 
          (
           [board_id] => 1 
           [price] =>200.00 
          ) 
        ) 
       ) 
     ) 
) 

как я могу получить board_id и цены я судимый несколько Foreach петель, но не могу получить результат

foreach($hotels as $row) 
    { 
     foreach($row as $k) 
     { 
      foreach($k as $l){ 
      echo $l['board_id']; 
      echo $l['price']; 
      } 
     } 
} 

этот код не работал

ответ

24

Это способ итерации по этому массиву:

foreach($hotels as $row) { 
     foreach($row['rooms'] as $k) { 
      echo $k['boards']['board_id']; 
      echo $k['boards']['price']; 
     } 
} 

Вы хотите перебрать в гостиницах и номерах (те, с числовыми индексами), поскольку те кажутся «коллекция» в этом случае. Остальные массивы сохраняют и группируют свойства.

+0

Это случай итерации. Но было бы здорово, если бы вы могли рассказать короткое сокращение, чтобы получить массив $ k ['boards']. Или, я бы сказал, мне нужно получить доски с board_id = 1. – Jithin

+0

@ Jithin Если вам нужен один с 'board_id = 1', это можно сделать, просто просмотрите руководство по PHP, раздел [Функции массива] (http : //php.net/manual/en/ref.array.php), вы найдете там удобные инструменты, если вам нужно что-то приятнее, чем 'foreach'. – kapa

9

то же самое, но с более значимыми именами переменных:

foreach($hotels as $hotel) 
{ 
     foreach($hotel['rooms'] as $room) 
     { 
      echo $room['boards']['board_id']; 
      echo $room['boards']['price']; 
     } 
} 
+4

Вы копируете уже принятый ответ –

+5

Но с более значимыми именами переменных. – Julian

+4

Это более значимые имена переменных, но это само по себе не требует совершенно отдельного ответа. Принятый ответ использует имена переменных, которые он делает, потому что это то, что используется OP. – mattbryanswan

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