任意の形式と入れ子の深さの連想配列を考えてみましょう。次に例を示します。
$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 レベル以上の深さでネストできることに注意してください。