質問

多次元配列を構築するための再帰関数を書いています。基本的に、問題は次のとおりです。

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

質問について私が理解していることから、これはそれがどのように見えるべきかです。

再帰を追加し、配列を返します。

編集:ASTASとして、カウント($ CHILDRE)== 0であっても配列を返す方が良いかもしれません。これにより、すべてのタイプがインラインになります。それ以外の場合は、あらゆる種類のエラーをラインに表示する場合があります。

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

あなたはこのようにそれを返すことができます:

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

それはあなたが尋ねたものではありませんが。何らかの形で、あなたの関数の部分を書き直さずにこれを行うことはできないと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top