1

我有一个 1 对 1 的线性树,其中语言 => 类型 => 产品 => 等;语言有很多类型,类型有很多产品等等。

我编写了一个递归函数来返回以下样式的数组:

Array
(
    [0] => Array
    (
        [id] => 166
        [name] => product1
        [type] => product
        [depth] => 2
        [parent] => Array
            (
                [0] => Array
                    (
                        [id] => 165
                        [name] => default
                        [type] => type
                        [depth] => 1
                        [parent] => Array
                            (
                                [0] => Array
                                    (
                                        [id] => 1
                                        [name] => en
                                        [type] => language
                                        [depth] => 0
                                        [parent] => false

                                    )

                            )

                    )

            )

    )

)

我想要的是一种递归方法,它将遍历该树并提供一个数组,例如

[0] => array( 'id' => 1, 'name' => 'en'),
[1] => array( 'id' => 165, 'name' => 'default'),
[2] => array( 'id' => 166, 'name' => 'product1')

由于 0,1,2 等于该元素depth,因此我可以构建数据的面包屑。

谢谢你。

4

1 回答 1

1

这里的关键是创建一个可以递归调用的打印函数。我会建议这样的事情

function print_recursive($array, $depth = 0) {
    //Code to print your stuff

    //Calls the print function on the parent if it's an array
    if(is_array($array['parent'])) {
        print_recursive($array['parent'], $depth+1);
    }
}

depth 参数默认为 0,但我们在 $array['parent'] 上调用 print_recursive 时将其增加 1。这样,每次您深入数组时,它都会增加。

于 2013-07-25T14:45:06.070 回答