php - PHP递归函数输出选择
问题描述
我一定是屏蔽了一些东西,我知道答案很简单,但我一生都无法从谷歌得到任何明确的答案。我有这个数组:
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 的事情,但现在已经研究了很长时间才弄明白。任何帮助,将不胜感激。
解决方案
这是一个简单的递归函数:
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>';
}
}
}
随意根据您的需要修改/更改它,但它应该是不言自明的。
推荐阅读
- asynchronous - Flutter:如何将 TextField 文本传递给 API 请求?
- cassandra - 提高 cassandra 的性能
- python - 如何从 JSON 数据中解析数据?
- c# - Starting an async Task running for the lifetime of an object
- javascript - 如何使用 html 选择选项在表上显示 sql 查询结果?
- elasticsearch - elasticsearch 7.3“字段扩展匹配太多字段”
- math - 有什么解决办法吗?
- python - TypeError:字节索引必须是整数或切片,而不是 str - Python 错误
- c - 在C中计算三元组(3个字母序列)?
- javascript - 如何抓取元素的所有子元素