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