Многомерный массив – как получить определенные значения из подматрицы

У меня есть следующая структура массива:

 массив
 (
     [0] => Массив
         (
             [product_option_id] => 236
             [option_id] => 14
             [имя] => Масура S
             [type] => выберите
             [option_value] => Массив
                 (
                     [0] => Массив
                         (
                             [product_option_value_id] => 33
                             [option_value_id] => 53
                             [имя] => Альб
                             [цена] => 
                             [price_prefix] => +
                         )

                     [1] => Массив
                         (
                             [product_option_value_id] => 35
                             [option_value_id] => 55
                             [имя] => Розу
                             [цена] => 
                             [price_prefix] => +
                         )

                 )

             [обязательно] => 0
         )

     [1] => Массив
         (
             [product_option_id] => 237
             [option_id] => 15
             [имя] => Масура М
             [type] => выберите
             [option_value] => Массив
                 (
                     [0] => Массив
                         (
                             [product_option_value_id] => 34
                             [option_value_id] => 58
                             [имя] => Розу
                             [цена] => 
                             [price_prefix] => +
                         )

                 )

             [обязательно] => 0
         )
 )

Я теряюсь, пытаясь отобразить все значения [name] из этого массива.

То, что я пытаюсь сделать, это заполнить форму выпадающим списком на основе первого уровня [name] (например, [name] => Masura S ), а затем выбрать второй выпадающий список со вторым уровнем [name] (например [name] => Alb ).

Буду признателен, если у вас есть указатели …

Вы можете заполнить первый выбор следующим образом:

 <select> <?php $c=count($array); for ( $i=0; $i < $c; $i++) { ?> <option><?php echo $array[$i]['name'];?></option> <?php } ?> </select> 

2-й выбор:

 <select> <?php for ( $i=0; $i < $c; $i++) { $c2=count($array[$i]); for ($j=0;$j<$c2;$j++){ ?> <option><?php echo $array[$i][$j]['name'];?></option> <?php }} ?> </select> 

Я бы разделил имена на отдельные массивы, как это, после этого должно быть легко заполнить выпадающие списки по мере необходимости:

 $product_names = $option_names = array(); foreach ($products as $index => $product) { $product_names[$index] = $product['name']; foreach ($product['option_value'] as $option) { $option_names[$index][] = $option['name']; } } 

Если вы хотите, чтобы название продукта для индекса массива 0, вы должны использовать $ product_names [0] (строка), а имена опций для этого продукта можно найти из $ option_names [0] (массив).

Приведенный выше код не заботится о существующих идентификаторах, поэтому, если вам нужны они для формы, вам нужно будет немного расширить код.

Вам нужно будет использовать рекурсивную функцию
вот пример

 function recursion($array) { foreach ($array as $key => $value) { echo $value; if (is_array($value)) $this->recursion($value); } } recursion($array); 

Попробуй это:

 $name = array_column($array, 'name');