我试图编写一个函数,它将根据以这种方式定义的元素数组构建一个树形结构数组:
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 正如你所看到的,什切青在世界"而不是世界=>欧洲=>波兰=>什切青
答案 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);