创建没有数组的php键值对的实例

时间:2009-11-25 09:34:56

标签: php multidimensional-array key-value

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

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           
    }
}

思考?我知道我可以重写函数的结构以使其工作,但似乎这应该是不必要的。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

你可以这样返回:

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

虽然这不是你问的。我认为如果不以某种方式重写函数的某些部分,你就无法做到这一点。

答案 2 :(得分:0)

数组是PHP必须提供的唯一键值对容器。所以你必须使用一个数组,如果你想要你的函数(可能是递归或非递归)返回一个键值对。

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