根据从xml或json填充的数据创建下拉菜单有一些想法。但是我怎么能用php完全做到这一点?一种可能的方法是创建一个多级数组。但是从mysql数据创建它的最佳方法是什么(具有子菜单的父ID),以及如何有效地读取数组(通过foreach循环?)?
答案 0 :(得分:1)
对于 php 方面,我们假设您使用该查询检索表格中的格式数组:
$menu = array(
'page/1' => 'about',
'page/2' => 'photos',
'menu-title' => array('page/4' => 'sub-menu-1','page/5' => 'sub-menu-2')
);
echo '<ul>';
foreach($menu as $key => $value){
if(is_string($value)){
echo '<li><a href="'.$key.'">'.$value.'</a></li>';
}
if(is_array($value)){
echo '<ul>';
echo '<li><a href="#">'.key($value).'</a></li>';
foreach($value as $sub_key => $sub_value){
echo '<li><a href="'.$sub_key .'">'.$sub_value.'</a></li>';
}
echo '</ul>';
}
}
echo '</ul>';
对于 mysql 数据库,如果它为null,则为“parent_id”列,那么它将是一个根级别,除此之外,它将是一个子目录,另一列为“path”和“标题,你也可以添加一个”重量“列来订购它们。
注意:这是未经测试的代码
答案 1 :(得分:0)
我喜欢遍历从mysql中提取的行并创建一个数组,其中键是输入的值,值是文本。所以,如果你想创建一个下拉列表,如:
<input value="UT">Utah</input>
<input value="VT">Vermont</input>
<input value="NV">Nevada</input>
<input value="CA">California</input>
我会创建一个如下所示的数组:
array(
"UT" => "Utah",
"VT" => "Vermont",
"NV" => "Nevada",
"CA" => "California",
)
使用foreach将数组转换为html非常容易。