我有一个像这样的二维数组:
$myarray = [
['earth', 'europe', 'paris', 'tour eiffel'],
['earth', 'europe', 'rome', 'colosseum'],
['earth', 'europe', 'rome', 'roman forum'],
['earth', 'europe', 'rome'],
['earth', 'europe', 'paris', 'arc de triomphe'],
['earth', 'north amercica', 'usa', 'new york', 'empire state building'],
['earth', 'north amercica'],
...
]
我希望将其转换为多维数组,如下所示:
$myMultiArray = [
'earth' => [
'europe' => [
'paris' => ['tour eiffel', 'arc de triomphe']
'rome' => ['colosseum', 'roman forum']
],
'north america' => [
'usa' => [
'new york' => ['empire state building']
]
]
]
]
我尝试了不同的方法,唯一似乎有效的方法如下:
$data = [];
foreach($myarray as $index=> $el)
{
if ($index == 0 )
{
if (!isset($data[$el]))
{
$data[$el] = [];
}
}
else if ($index == 1)
{
$data[$myarray[0]][$el] = [];
}
// ... etc
}
但这不是一个优雅的解决方案,我认为
答案 0 :(得分:1)
当子阵列长度为1时,它无法工作
$res = [];
foreach($myarray as $item) {
$p = &$res;
for($i=0; $i < count($item)-1; $i++) {
if(!isset($p[$item[$i]])) $p[$item[$i]] = [];
$p = &$p[$item[$i]];
print_r($res);
}
$p[] = $item[$i];
}
print_r($res);