我正在编写递归功能来构建多维阵列。基本上,问题如下:

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

想法?我知道我可以重写功能的结构以使其正常工作,但是似乎不必要。

有帮助吗?

解决方案

阵列是PHP提供的唯一键值对。因此,如果您希望自己的功能(是否是递归),则必须使用数组来返回键值对。

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

其他提示

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

据我了解,这应该是什么样子。

附加递归并返回数组。

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

if(!count($children)){
            return array($term->text() => null);

您可以这样返回:

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

虽然这不是你问的。我认为,如果不重写功能的部分,您将无法做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top