Я, должно быть, что-то заблокировал, я знаю, что ответ прост, но, хоть убей, я не могу получить четких ответов от Google. У меня есть такой массив:
Array
(
[0] => Array
(
[id] => 1
[name] => Paint
[parent_id] => 0
[sub] => Array
(
[0] => Array
(
[id] => 4
[name] => Dulux
[parent_id] => 1
[sub] => Array
(
[0] => Array
(
[id] => 6
[name] => Roof Cover
[parent_id] => 4
[sub] => Array
(
)
)
)
)
[1] => Array
(
[id] => 5
[name] => Plascon
[parent_id] => 1
[sub] => Array
(
)
)
)
)
[1] => Array
(
[id] => 2
[name] => Electrical
[parent_id] => 0
[sub] => Array
(
)
)
[2] => Array
(
[id] => 3
[name] => Plumbing
[parent_id] => 0
[sub] => Array
(
)
)
)
и хотите вывести выбор с группами параметров. Я знаю, что это 101 PHP-штука, но я долго работал над этим, чтобы понять это. Любая помощь будет оценена по достоинству.
Было бы очень полезно, если бы вы могли опубликовать ожидаемый HTML-код, который вы хотите от этой рекурсивной функции.






Вот простая рекурсивная функция:
function output_option($arr) {
foreach ($arr as $item) {
if ($item['sub']) {
echo '<optgroup label = "', $item['name'], '">';
output_option($arr['sub']);
echo '</optgroup>';
} else {
echo '<option id = "', $arr['name'], '">', $arr['name'], '</option>';
}
}
}
Не стесняйтесь модифицировать / изменять его для своих нужд, но это должно быть достаточно понятным.
вы можете использовать array.strlen () == 0 для первого условия выхода и заменить foreach, отправив в рекурсию $ arr [index + 1]?
Проверьте это, аналогичная проблема может помочь вам: stackoverflow.com/questions/13874186/…