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 に答える