-1

I have an array like this:

$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'));

How can I turn it into the following array?

$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'))
    )
);
Stephen Rauch
  • 47,830
  • 31
  • 106
  • 135

2 Answers2

0

You can use array_reduce() using a custom aggregate function and a new array() as initial value.

Or iterate over the list looking for guess the parents from the menu text: in your case may be complicated because the parent wire is not explicit as element attribute.

Similar question: create array tree from array list

Community
  • 1
  • 1
Dario
  • 3,905
  • 2
  • 13
  • 27
0

Really don't know what exactly you want to do, but may be following code will help you to clarify your doubt.

<?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>';
Suresh
  • 5,687
  • 12
  • 51
  • 80
  • @dario thanks for suggestions. i have any solution from this link http://stackoverflow.com/questions/8840319/build-a-tree-from-a-flat-array-in-php – Syafrizal Natawiria Feb 03 '17 at 14:24