我有一系列项目,每个项目都有与之关联的深度级别。我试图将它们放入HTML无序列表但是很难。
数组看起来像:
$_items = array(
"0" => array('level'=>1,'name'=>'products','url'=>'/products/something.html'),
"1" => array('level'=>2,'name'=>'salts','url'=>'/salts/something.html'),
"2" => array('level'=>3,'name'=>'dogs','url'=>'/dogs/something.html'),
"3" => array('level'=>3,'name'=>'cats','url'=>'/cats/something.html'),
"4" => array('level'=>2,'name'=>'ponies','url'=>'/ponies/something.html'),
"5" => array('level'=>2,'name'=>'wolves','url'=>'/wolves/something.html'),
"6" => array('level'=>1,'name'=>'bears','url'=>'/bears/something.html'),
"7" => array('level'=>1,'name'=>'monkey','url'=>'/monkey/something.html'),
);
我试图让它看起来像:
<ul>
<li>products</li>
<ul>
<li>salts</li>
<ul>
<li>dogs</li>
<li>cats</li>
</ul>
<li>ponies</li>
<li>wolves</li>
</ul>
<li>bears</li>
<li>monkey</li>
</ul>
&#13;
任何建议都将不胜感激。我正在努力解决如何检测何时打开或关闭标签的代码。
答案 0 :(得分:3)
试试这个:
$_items = array(
"0" => array('level'=>1,'name'=>'products','url'=>'/products/something.html'),
"1" => array('level'=>2,'name'=>'salts','url'=>'/salts/something.html'),
"2" => array('level'=>3,'name'=>'dogs','url'=>'/dogs/something.html'),
"3" => array('level'=>3,'name'=>'cats','url'=>'/cats/something.html'),
"4" => array('level'=>2,'name'=>'ponies','url'=>'/ponies/something.html'),
"5" => array('level'=>2,'name'=>'wolves','url'=>'/wolves/something.html'),
"6" => array('level'=>1,'name'=>'bears','url'=>'/bears/something.html'),
"7" => array('level'=>1,'name'=>'monkey','url'=>'/monkey/something.html'),
);
$depth = 0;
foreach( $_items as $value ) {
if ( $value['level'] > $depth )
echo str_repeat( '<ul>', ( $value['level'] - $depth ) );
if ( $value['level'] < $depth )
echo str_repeat( '</ul>', ( $depth - $value['level'] ) );
$depth = $value['level'];
echo "<li><a href=\"$value[url]\">$value[name]</a></li>";
}
echo str_repeat( '</ul>', $depth );
$depth
var用于监视当前级别,最后str_repeat()将关闭所有级别,例如,如果数组中的最后一级不在根级别。