0

キーと値が任意の文字列である配列の多次元配列 (以下のソース) があります。階層が同じままである新しい配列 (以下が望ましい) を作成したいのですが、すべての KEY が独自の配列に再構築され、キー自体が「タイトル」値になり、すべてのサブ配列が「子」の下に継続されます。

&$source 配列と &$destination 配列を取り、それに応じて宛先配列を設定する再帰関数を使用してこれを達成するにはどうすればよいですか?

ソース配列:

Array (
    [Alpha] => Array (
        [Red] => one
        [Blue] => two
    )
    [Bravo] => Array (
        [Blue] => three
    )
)

必要な配列:

Array (
    [0] => Array (
        [title] => Alpha
        [children] => Array (
                    [0] Array([title] => Red, [children]= > false)
                    [1] Array([title] => Blue, [children]= > false)
        )
    )
    [1] => Array (
        [title] => Bravo
                    [0] Array([title] => Blue, [children]= > false)
        )
    )
)

注: 新しい配列の最終的なノード/リーフは気にしません。

4

2 に答える 2

3

宛先配列への参照を渡さずに変換を実行できます。

function convert_array($from){
    if(!is_array($from)){
        return false;
    }
    $to = array();
    foreach($from as $k=>$v){
        $to[] = array(
            'title' => $k,
            'children' => convert_array($v)
        );
    }
    return $to;
}

コードパッドの例

于 2012-04-05T20:50:21.957 に答える