php中的3级数组来组织数据

时间:2016-10-05 19:30:32

标签: php arrays

我想在php中创建一个三级数组,示例数据用于开发目的,我有:

$data = array(
array(1 => array("A ROW GREENS", array(
    "A1" => array("http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg"),
    "A2" => array("http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg"),
    "A3" => array("http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg")
))),
array(2 => array("A ROW BLUE",array(
    "A1" => array("http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg"),
    "A2" => array("http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg"),
    "A3" => array("http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg")
))),

);

你怎么看,这是结构:

Element:[ID -> Title][IDSubitem1->URL, IDSubitem2->URL2...]
Element:[ID -> Title][IDSubitem1->URL, IDSubitem2->URL2...]
Element:[ID -> Title][IDSubitem1->URL, IDSubitem2->URL2...]

我需要使用标题打印<ul>(使用ID作为标识符)并打印其他<ul>标记以显示或隐藏子项或选定的父项。

<ul id="parent">
    <li id="1">A ROW GREENS</li>
    <li id="2">A ROW BLUE</li>
</ul>

<ul id="child1">
    <li id="child1-A1">http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg</li>
    <li id="child1-A2">http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg</li>
    <li id="child1-A3">http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg</li>
</ul>

<ul id="child2">
    <li id="child2-A1">http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg</li>
    <li id="child2-A2">http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg</li>
    <li id="child2-A3">http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg</li>
</ul>

2 个答案:

答案 0 :(得分:2)

您可以达到以下预期结果: -

<?php
$data = array(
array(1 => array("A ROW GREENS", array(
    "A1" => array("http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg"),
    "A2" => array("http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg"),
    "A3" => array("http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg")
))),
array(2 => array("A ROW BLUE",array(
    "A1" => array("http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg"),
    "A2" => array("http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg"),
    "A3" => array("http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg")
))));

$parent_data = '';
$child_data = '';
foreach($data as $dat){
    foreach($dat as $key=>$da){
        $parent_data .="<li id ='".$key."'>".$da[0]."</li>";
        $child_data .="<ul id='child".$key."'>";
        foreach ($da[1] as $k=>$v){
             $child_data .="<li id='child".$key."-".$k."'>".$v[0]."</li>";
        }
        $child_data .="</ul>";
    }

}
?>
<ul id="parent"><?php echo $parent_data;?></ul><?php echo  $child_data;?>

输出: - https://eval.in/656522

注意: - 代码只适用于给定的数组结构(元素可以更多,没有问题),但是如果更改了数组结构,那么代码将无法工作。

答案 1 :(得分:0)

您是否尝试使用3 foreach()

foreach($data as $level1)
{
  foreach(level1 as $level2)
  {
    foreach(level2 as $level3)
    {