2014-11-21 3 views
0

Я пытаюсь пройти следующий набор данных, я получил использование foreach, но по какой-то причине я не могу понять, что случилось?PHP foreach массив в массиве, как пройти?

Код:

foreach($data['service']['products'] as $settings){ 
     print_r($settings); 
} 

$ данных как print_r

Array 
(
    [service] => Array 
     (
      [products] => Array 
       (
        [name] => OW VoIP 
        [settings] => Array 
         (
          [0] => Array 
           (
            [name] => ComplexPort 
            [value] => False 
           ) 

          [1] => Array 
           (
            [name] => LosingCarrier 
            [value] => 2 
           ) 

данных как var_dump

array (size=3) 
    'service' => 
    array (size=1) 
     'products' => 
     array (size=2) 
      'name' => string 'VoIP' (length=7) 
      'settings' => 
      array (size=21) 
       0 => 
       array (size=2) 
        'name' => string 'ComplexPort' (length=11) 
        'value' => string 'False' (length=5) 
       1 => 
       array (size=2) 
        'name' => string 'LosingCarrier' (length=13) 
        'value' => string '2' (length=1) 
+0

'Foreach ($ данных [ 'сервис'] [ 'продукты'] [ 'настройки'] как настройки $) {} ' – panther

+0

Пожалуйста, покажите нам структуру вашего массива и то, что вы хотите прорвать! – Rizier123

+0

см. Выше его уже там @ Rizier123 – mahen3d

ответ

0

Это должно работать для вас, чтобы петли корыта все продукты и их параметры:

foreach($data['service'] as $products){ 
    foreach($products as $settings) { 
     if (is_array($settings)) 
      print_r($settings); 
    } 
} 
0
foreach([arrayLvL1][arrayLvL2][arrayLvL3] as $key => $value){ 
    echo $value 
} 

я думаю, что должен это сделать.

Также кто-то в комментариях сказал то же самое. Я не уверен, как связать их комментарий.

0

Это должно быть

foreach($data['service']['products']['settings'] as $settings){ 
-1

Я не вижу результаты, которые вы получаете. Вы нас punking? Ваш результат не должен быть возможным.

$arr = array(
      'service' => array(
          'products' => array(
               'name' => 'VoIP', 
               'settings' => array(
                    0 => array(
                       'name' => 'ComplexPort', 
                       'value' => 'False' 
                       ), 
                    1 => array(
                       'name' => 'LosingCarrier', 
                       'value' => 2 
                       ) 
                    ) 
               ) 
          ) 
      ); 

foreach($arr['service']['products']['settings'] as $settings) { 
    echo '<pre>' . print_r($settings) . '</pre>'; 
} 

выход ВОЛЯ

Array ([name] => ComplexPort [value] => False) 

1 

Array ([name] => LosingCarrier [value] => 2) 

1 

В основном .. вы только сдающие его один массив, продукты или настройки. Он не может получить базовый массив, поскольку он не существует в области, предоставляемой событием foreach. И тот, кто проголосовал за это, жалкий и не понимает массивов.

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