0

我正在编写一个递归函数来构造一个多维数组。基本上,问题如下:

function build($term){      
    $children = array();

    foreach ( $term->children() as $child ) {
        $children[] = build($child);
    }

    if(!count($children)){
        return $term->text();
    } else {
        return $term->text() => $children; //obviously, this doesn't work           
    }
}

想法?我知道我可以重写函数的结构以使其工作,但似乎没有必要这样做。

4

3 回答 3

2
function build($term){          
    $children = array();

    foreach ( $term->children() as $child ) {
        $children += build($child);
    }

    if(!count($children)){
        return $term->text();
    } else {
        return array($term->text() => $children); //obviously, this doesn't work               
    }
}

根据我对这个问题的理解,这应该是它的样子。

附加递归并返回一个数组。

编辑:顺便说一句,即使 count($children) ==0,您最好还是返回一个数组,这将使您的所有类型都内联。否则你可能会得到各种各样的错误:

if(!count($children)){
            return array($term->text() => null);
于 2009-11-25T09:42:59.170 回答
0

你可以像这样返回它:

return array($term->text() => $children);

虽然不是你问的。我认为如果不以一种或另一种方式重写部分功能,就无法做到这一点。

于 2009-11-25T09:43:40.217 回答
0

数组是 PHP 必须提供的唯一键值对容器。因此,如果您希望函数(可能是递归的或不是递归的)返回键值对,则必须使用数组。

return array($term->text() => $children);
于 2009-11-25T10:00:22.807 回答