将具有多个叶节点的数组展平以使每个叶的完整路径都是不同的返回的最佳方法是什么?
array("Object"=>array("Properties"=>array(1, 2)));
屈服
- 对象.属性.1
- 对象.属性.2
我能够展平到 Object.Properties.1 但 2 没有得到递归函数处理:
function flattenArray($prefix, $array)
{
$result = array();
foreach ($array as $key => $value)
{
if (is_array($value))
$result = array_merge($result, flattenArray($prefix . $key . '.', $value));
else
$result[$prefix . $key] = $value;
}
return $result;
}
我认为在预期多个叶节点时自上而下将不起作用,因此要么需要某种类型的自下而上处理,要么需要一种为每个叶和进程复制数组的方法(尽管这似乎完全低效)