2

任意の形式と入れ子の深さの連想配列を考えてみましょう。次に例を示します。

$someVar = array(
    'name'      => 'Dotan',
    'age'       => 35,
    'children'  => array(
        0 => array(
            'name'  => 'Meirav',
            'age'   => 6,
        ),
        1 => array(
            'name'  => 'Maayan',
            'age'   => 4,
        )
    ),
    'dogs' => array('Gili', 'Gipsy')
);

これをパスと値の連想配列に変換したいと思います。

$someVar = array(
    'name'            => 'Dotan',
    'age'             => 35,
    'children/0/name' => 'Meirav',
    'children/0/age'  => 6,
    'children/1/name' => 'Maayan',
    'children/1/age'  => 4,
    'dogs/0'          => 'Gili',
    'dogs/1'          => 'Gipsy'
);

私は、配列要素に対して再帰し、非配列要素 (int、float、bool、および文字列) に対して配列$return['path']および を返す再帰関数の作成を開始しました$return['value']。これはすぐにずさんになりました!PHPでこれを行うより良い方法はありますか? callable とオブジェクトは配列に渡されないと思いますが、その可能性に対処するソリューションが最適です。また、入力配列/には要素名に文字が含まれていないと想定していますが、それを考慮することは賢明かもしれません! 入力配列は、8 レベル以上の深さでネストできることに注意してください。

4

2 に答える 2