首页 / PHP / 使用PHP生成嵌套ul列表的问题
使用PHP生成嵌套ul列表的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用PHP生成嵌套ul列表的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2145字,纯文字阅读大概需要4分钟。
内容图文
![使用PHP生成嵌套ul列表的问题](/upload/InfoBanner/zyjiaocheng/671/998a2fa8a28a4740af67fc2a34e4b61f.jpg)
我正在开发一个前端Web应用程序,其中嵌套的无序列表将用于jQuery插件mcdropdown.
这是PHP的数据结构:数组的嵌套数组:
Array
(
[0] => Array
(
[fullpath] => ../foil/alphanumeric/
[depth] => 0
)
[1] => Array
(
[fullpath] => ../foil/alphanumeric/letters/
[depth] => 1
)
[2] => Array
(
[fullpath] => ../foil/alphanumeric/numbers/
[depth] => 1
)
[3] => Array
(
[fullpath] => ../foil/alphanumeric/numbers/symbols/
[depth] => 2
)
)
基本上,我从this question on SO那里得到了一个很好的答案,对其做了一些修改:
global $fullpaths; // $fullpaths contains the above data structure in print_r
$result = '';
$currentDepth = -1;
while(!empty($fullpaths))
{
$currentNode = array_shift($fullpaths);
if($currentNode['depth'] > $currentDepth)
{
$result .='<ul>';
}
if($currentNode['depth'] < $currentDepth)
{
$result .=str_repeat('</ul>', $currentDepth - $currentNode['depth']);
}
$result .= '<li>'. $currentNode['fullpath'] .'</li>';
$currentDepth = $currentNode['depth'];
if(empty($fullpaths))
{
$result .= str_repeat('</ul>', 1 + $currentDepth);
}
}
print $result;
并得到以下输出:
<ul>
<li>../foil/alphanumeric/</li>
<ul>
<li>../foil/alphanumeric/letters/</li>
<li>../foil/alphanumeric/numbers/</li>
<ul>
<li>../foil/alphanumeric/numbers/symbols/</li>
</ul>
</ul>
</ul>
mcdropdown jQuery插件无法接受,它期望如下所示:
<li rel="1">
'Alphanumeric'
<ul>
<li rel="2">'Letters'</li>
<li rel="3">'Numbers'
<ul>
<li rel="4">'Symbols'</li>
</ul>
</li>
</ul>
</li>
坦率地说,我不太了解该问题的答案,我一直在尝试修改该解决方案以适应我的情况,但仍然失败.
任何帮助和建议都非常适合提前使用.
解决方法:
如果您已经具有正确的深度值,则不需要递归.我有用于<-< li>生成的类似功能:
function ulli($newlevel, &$level, $UL="ul", $once=1) {
if ($level == $newlevel) {
echo "</li>\n";
}
while ($level<$newlevel) {
$level++;
echo "\n <$UL>\n";
}
while ($level>$newlevel) {
if ($once-->0) { echo "</li>\n"; }
$level--;
echo " </$UL>"
. ($level>0 ? "</li>" : "") . "\n"; // skip for final </ul> (level=0)
}
}
它需要一个当前的$level变量作为参考(= $currentDepth).然后您将其深度传递为$newlevel.但是,它的第一个深度必须为1.
基本用法如下:
$currentDepth=0;
foreach ($array as $_) {
ulli($_["depth"]+1, $currentDepth);
echo "<li>$_[path]";
}
ulli(0, $currentDepth);
好吧,古怪.但这对我有用.
内容总结
以上是互联网集市为您收集整理的使用PHP生成嵌套ul列表的问题全部内容,希望文章能够帮你解决使用PHP生成嵌套ul列表的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。