У меня есть следующая структура массива:
массив
(
[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');