将键值对转换为嵌套数组

时间:2015-03-15 21:42:45

标签: php arrays multidimensional-array

我试图编写一个函数,它将根据以这种方式定义的元素数组构建一个树形结构数组:

array(
  'child1' => 'parent',
  'child2' => 'parent',
)

所以每个元素都有一个已定义的父元素,每个元素都有一个唯一的名称。

基于此,这是我的数组:

myArray(
  'Europe' => 'World',
  'Africa' => 'World',
  'UK' => 'Europe',
  'France' => 'Europe',
  'London' => 'UK',
)

我需要一个能够返回此结果的函数:

World => Array (
    Europe=> Array (
        UK=>Array(
            London=>Array()
        ), 
        France=>Array()
    ), 
    Africa=>Array()
)

这是我能得到的最接近的:http://3v4l.org/OGoXa 正如你所看到的,什切青在世界"而不是世界=>欧洲=>波兰=>什切青

1 个答案:

答案 0 :(得分:1)

$myArray = array(
  'Europe' => 'World',
  'Africa' => 'World',
  'UK' => 'Europe',
  'France' => 'Europe',
  'London' => 'UK',
);

$x = new SimpleXMLElement ("<root/>");
foreach ($myArray as $child => $parent)
{
  if (!$x->xpath ("//$parent"))
  {
    $x->addChild($parent);
  }
  $x->xpath ("//$parent")[0]->addChild($child);
}
$json = json_encode($x);
$array = json_decode($json,TRUE);
var_dump ($array);