2015-12-16 3 views
2

Как я могу группировать имя и название меню меню имени и имени? Существуют ли какие-либо встроенные функции php для этого? Я ве искал в гугле, но еще не очень хорошо понялКак группировать многомерный массив

(int) 0 => array(
    'MenuCategory' => array(
     'name' => 'Products' 
    ), 
    'Menu' => array(
     'name' => 'A', 
     'url' => 'a' 
    ), 
    'Sub' => array(
     'name' => 'A1', 
     'url' => 'a1' 
    ) 
), 
(int) 1 => array(
    'MenuCategory' => array(
     'name' => 'Products' 
    ), 
    'Menu' => array(
     'name' => 'A', 
     'url' => 'a' 
    ), 
    'Sub' => array(
     'name' => 'A2', 
     'url' => 'a2' 
    ) 
), 
(int) 2 => array(
    'MenuCategory' => array(
     'name' => 'Products' 
    ), 
    'Menu' => array(
     'name' => 'B', 
     'url' => 'b' 
    ), 
    'Sub' => array(
     'name' => null, 
     'url' => null 
    ) 
), 
(int) 3 => array(
    'MenuCategory' => array(
     'name' => 'Data' 
    ), 
    'Menu' => array(
     'name' => 'A', 
     'url' => 'a' 
    ), 
    'Sub' => array(
     'name' => null, 
     'url' => null 
    ) 
), 
(int) 4 => array(
    'MenuCategory' => array(
     'name' => 'Data' 
    ), 
    'Menu' => array(
     'name' => 'B', 
     'url' => 'b' 
    ), 
    'Sub' => array(
     'name' => 'B1', 
     'url' => 'b1' 
    ) 
), 
(int) 5 => array(
    'MenuCategory' => array(
     'name' => 'Data' 
    ), 
    'Menu' => array(
     'name' => 'C', 
     'url' => 'c' 
    ), 
    'Sub' => array(
     'name' => null, 
     'url' => null 
    ) 
), 
(int) 6 => array(
    'MenuCategory' => array(
     'name' => 'Report' 
    ), 
    'Menu' => array(
     'name' => 'A', 
     'url' => 'a' 
    ), 
    'Sub' => array(
     'name' => null, 
     'url' => null 
    ) 
), 
(int) 7 => array(
    'MenuCategory' => array(
     'name' => 'Report' 
    ), 
    'Menu' => array(
     'name' => 'B', 
     'url' => 'b' 
    ), 
    'Sub' => array(
     'name' => null, 
     'url' => null 
    ) 
), 
(int) 8 => array(
    'MenuCategory' => array(
     'name' => 'Report' 
    ), 
    'Menu' => array(
     'name' => 'C', 
     'url' => 'c' 
    ), 
    'Sub' => array(
     'name' => null, 
     'url' => null 
    ) 
), 

Это результат, который будет выпущен позднее

+0

Вы хотите заказать массив на основе значений MenuCategory ['name'] и Menu ['name'] ?? – aharen

ответ

0

Сгруппируйте их на уровне первого

использование Еогеасп сортировать их пример

foreach ($input_arr as $key => &$entry) { 
    $level_arr[$entry['level']][$key] = $entry; 
} 
0

если я предполагаю, что ваш массив имя переменной $menu, попробуйте этот код.

$new = array(); 
array_map(function($a) use(&$new){ 
    if($a['Sub']['name']) 
     $new[$a['MenuCategory']['name']][$a['Menu']['name']][$a['Sub']['name']] = $a['Sub']['name']; 
    else 
     $new[$a['MenuCategory']['name']][$a['Menu']['name']] = $a['Menu']['name']; 
}, $menu); 
print_r($new); 

и Выведет

Array 
(
    [Products] => Array 
     (
      [A] => Array 
       (
        [A1] => A1 
        [A2] => A2 
       ) 

      [B] => B 
     ) 

    [Data] => Array 
     (
      [A] => A 
      [B] => Array 
       (
        [B1] => B1 
       ) 

      [C] => C 
     ) 

    [Report] => Array 
     (
      [A] => A 
      [B] => B 
      [C] => C 
     ) 

) 

Надеется, что это поможет.

+0

спасибо, сэр, преодолели мою проблему^_^ –

+0

, где я разместил URL-адрес? –

Смежные вопросы