我正在使用http://mjsarfatti.com/sandbox/nestedSortable/中的jQuery插件 它在轻松排序列表方面做得非常出色,但我在保存数据库并将其重新加载时遇到问题。
我的问题是,一旦你将数组导入PHP,将其序列化并将其存储到数据库中,你最终会得到类似的东西
a:1:{s:4:"page";a:4:{i:4;s:4:"root";i:2;s:1:"4";i:3;s:1:"2";i:1;s:1:"2";}}
将其从数据库中拉回来,对其进行反序列化并执行var_export我有
array ( 'page' => array ( 1 => 'root', 3 => 'root', 2 => '3', 4 => 'root', ), )
我如何通过这个数组并确保每个孩子都正确嵌套? 输出应该在无序列表中,如
page_1
page_3
- page_2
Page_4
或实际代码
<ul>
<li id="page_1">Page 1</li>
<li id="page_3">Page 3
<ul>
<li id="page_2>Page 2</li>
</ul>
</li>
<li id="page_4">Page 4</li>
</ul>
但是一旦完成它将是巨大的,可能是4-5级。
提前致谢!
答案 0 :(得分:2)
这应该可以帮助你:
function display_page_listings($arr, $parent = 'root')
{
if($parent == 'root')
{
echo '<ul>';
}
$displayed = false;
foreach($arr as $item_index => $item_parent)
{
if($item_parent == $parent)
{
if(!$displayed && $parent != 'root')
{
echo '<ul>';
$displayed = true;
}
echo '<li id="page_' . $item_index . '">Page ' . $item_index;
display_page_listings($arr, $item_index);
echo '</li>';
}
}
if($parent == 'root' || $displayed)
{
echo '</ul>';
}
}
$arr = array(
'page' => array ( 1 => 'root', 3 => 'root', 2 => '3', 4 => 'root')
);
display_page_listings($arr['page']);