【发布时间】:2012-12-19 10:48:13
【问题描述】:
我想为我的类别制作一个选择树。这是无序列表。
function generate_menu($parent, $menu_array = null)
{
$has_childs = false;
foreach ($menu_array as $key => $value) {
if ($value['parent'] == $parent) {
if ($has_childs === false) {
$has_childs = true;
echo "<ul>\n";
}
echo '<li><a href="#">'.$value['name'].'</a>';
generate_menu($key, $menu_array);
echo "</li>\n";
}
}
if ($has_childs === true)
echo "</ul>\n";
}
这是无序列表的 HTML 输出。
<ul>
<li>
Ford
<ul>
<li>
Falcon
<ul>
<li>
Futura
<ul>
<li>FPV</li>
<li>GT</li>
<li>F6</li>
<li>GS</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>F150</li>
<li>Festiva</li>
</ul>
问题:如何为select option制作当前函数,结果会是这样。
<select name="categories">
<option value="Ford">Ford</option>
<option value="Falcon">-Falcon</option>
<option value="Futura">--Futura</option>
<option value="FPV">--FPV</option>
<option value="GT">---GT</option>
<option value="F6">---F6</option>
<option value="GS">---GS</option>
<option value="F150">-F150</option>
<option value="Festiva">-Festiva</option>
</select>
【问题讨论】:
-
将
ul替换为select,将li替换为option -
请将 ul/li 列表的 HTML 输出也添加到您的问题中。通常很容易将其转换为要用于选择的字符串。
-
@Ibu 是的,如果在无序列表中,它有
<ul><li>来分隔孩子。在选择选项上,我想添加- Sub、--Sub、---Sub。 -
如果您想像使用
ul一样生成option,您需要为$level提供另一个参数。每次进入函数时,您将$level增加一,每次外出时,您减少一(在您的情况下,这是函数的开始和结束)。$level的默认值为 0。
标签: php hierarchical