从序列化数据解析PHP数组
我正在使用来自的jQuery插件 它在轻松排序列表方面做得非常好,但我在将其保存为DB并加载备份时遇到了问题 我的问题是,一旦你把数组放到PHP中,序列化并存储到数据库中,你最终会得到类似于从序列化数据解析PHP数组,php,jquery,arrays,nested,jquery-ui-sortable,Php,Jquery,Arrays,Nested,Jquery Ui Sortable,我正在使用来自的jQuery插件 它在轻松排序列表方面做得非常好,但我在将其保存为DB并加载备份时遇到了问题 我的问题是,一旦你把数组放到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_导出 array('page'=>array(1=>'root',3=>'root',2=>'3',4=>'root',),
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_导出
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>
第1页
第3页
这会让你走上正轨:
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']);
函数显示\u页面\u列表($arr,$parent='root')
{
如果($parent=='root')
{
回声“”;
}
$displated=false;
foreach($arr作为$item\u索引=>$item\u父项)
{
如果($item_parent==$parent)
{
如果(!$displayed&&$parent!='root')
{
回声“”;
$displated=true;
}
echo'- page.$item\u index;
显示页面列表($arr,$item\u索引);
回音“
”;
}
}
如果显示($parent=='root'| |$)
{
回声“
”;
}
}
$arr=数组(
'页面'=>数组(1=>'根',3=>'根',2=>'3',4=>'根')
);
显示页面列表($arr['page']);
请g-d,不要告诉我您正在数据库中存储序列化数据。请如果有更好的存储大型阵列的方法,请随时提供建议!:-)如果只是存储和调节数据,那么序列化格式通常是可以接受的。如果您需要使用该结构并高效地存储它,我建议您设置树:通过一些调整来实际匹配我所需的输出,这个脚本效果非常好!谢谢