0

因此,作为一个例子,我在网站中使用了这种结构。问题是我必须在下拉列表中获取这些项目,但他们必须根据他们的父母来打算。

  • loadSubItems(id) 返回 id 的子项。
  • loadSubItems(0) 将给出根的子项,在本例中为 9、16、20
  • loadSubItems(9) 将给出一个空数组 loadSubItems(16) 将返回 17、18、19

问题在于,只要该级别有子项,中间循环(foreach)就必须继续循环,打印它们并且必须为每个级别添加一个额外的意图“_”。

我已经尝试解决这个问题好几个小时了,但我已经失去了思考,我似乎无法弄清楚必须发生什么才能做到这一点。

欢迎任何帮助!提前致谢:

测试数据如下:

https://dl.dropboxusercontent.com/u/10123290/structuur.png

我正在使用以下代码进入第二级:

    $items = loadSubItems(0); // returns 9 16 20
    $intend = "";
    foreach($items as $item) {
        $subitems = loadSubItems($item); 
        if(count($subitems) > 0) {
            echo $intend.$item." has subitems: <br />";
            $intend .= "_";
            foreach($subitems as $subitem) {
                echo $intend.$subitem."<br />";
            }
        } else {
            echo "<br />".$item." has no subitems <br />";
        }
    }

此代码有输出:

9 has no subitems 
16 has subitems: 
_17
_18
_19

20 has no subitems 

编辑:所以我想要的结果是:

9 has no subitems 
16 has subitems: 
_17
__21
___22
__23
___24
_18
_19

20 has no subitems
4

1 回答 1

1

看看我写的这个小函数。它完全符合您的需要.. 这是递归方法。您可以检查它的任何级别。

<?php
function arrayRec($array, $intent) {
    $intent .= "_";
    foreach($array as $key=>$value) {
        echo $intent.$key."</br>";
        arrayRec($value, $intent);
    }   
}
$tree = array("1" => array("11" => array(), "12" => array(), "13" => array()), "2" => array(), "3" => array("31" => array("311" => array()), "32" => array()), "4");
arrayRec($tree);
?>

这会导致类似:

_1
__11
__12
__13
_2
_3
__31
___311
__32
_4
于 2013-04-27T15:32:46.390 回答