【发布时间】:2013-06-19 15:00:30
【问题描述】:
考虑一个任意形式和嵌套深度的关联数组,例如:
$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、浮点数、布尔值和字符串)返回数组$return['path'] 和$return['value']。这很快就草率了! 在 PHP 中有没有更好的方法来做到这一点?我会假设可调用对象和对象不会在数组中传递,尽管处理这种可能性的任何解决方案都是最好的。另外,我假设输入数组的元素名称中没有/ 字符,但考虑到这一点可能是谨慎的! 请注意,输入数组可以嵌套 8 层或更多层!
【问题讨论】:
-
递归函数最适合您的场景。