我有一个这样的数组:
$array = array(
array('menu' => 'Menu Parent 1', 'link' => '#'),
array('menu' => 'Sub Menu Parent 1', 'link' => '/submenu1'),
array('menu' => 'Menu Parent 2', 'link' => '#'),
array('menu' => 'Sub Menu Parent 2.1', 'link' => '/submenu21'),
array('menu' => 'Sub Menu Parent 2.2', 'link' => '/submenu22'));
如何将其转换为以下数组?
$array = array(
array('menu' => 'Menu Parent 1', 'link' => '#',
'submenu' => array(array('menu' => 'Sub Menu Parent 1', 'link' => '/submenu1'))
),
array('menu' => 'Menu Parent 2', 'link' => '#',
'submenu' => array(array('menu' => 'Sub Menu Parent 2.1', 'link' => '/submenu21'),
array('menu' => 'Sub Menu Parent 2.2', 'link' => '/submenu22'))
)
);
答案 0 :(得分:0)
您可以使用自定义聚合函数array_reduce()
和新array()
作为初始值。
或者遍历列表,从菜单文本中寻找猜测父项:在您的情况下可能会很复杂,因为父线未明确作为元素属性。
答案 1 :(得分:0)
真的不知道你想要做什么,但可能会遵循以下代码来帮助你澄清你的疑问。
<?php
$data = array(
array('menu' => 'Menu Parent 1', 'link' => '#'),
array('menu' => 'Sub Menu Parent 1', 'link' => '/submenu1'),
array('menu' => 'Menu Parent 2', 'link' => '#'),
array('menu' => 'Sub Menu Parent 2.1', 'link' => '/submenu21'),
array('menu' => 'Sub Menu Parent 2.2', 'link' => '/submenu22')
);
$updatedData[0] = $data[0];
$updatedData[0]['submenu'] = array($data[1]);
$updatedData[1] = $data[2];
$updatedData[1]['submenu'] = array($data[3],$data[4]);
echo '<pre>';
print_r($updatedData);
echo '</pre>';