2014-12-17 3 views
-1

У меня есть некоторые трудности для объединения многих многомерных массивов в php. Я пытался сделать это по-разному, но каждый раз я не получаю желаемого результата. Я попытался с array_merge (array_unique, ...) и в другом посте я нашел способ с array_map, но я не понимаю все ...Уникальный слияние нескольких многомерных массивов

я могу иметь много мульти массив, как показано ниже:

array(
(int) 0 => array(
    'User' => array(
     'username' => 'testje', 
     'firstname' => 'jean', 
     'lastname' => 'test' 
    ), 
    'Calendar' => array(
     'period' => 'AM' 
    ), 
    'Shift' => array(
     'name' => 'HV', 
     'color' => '#b7fa00' 
    ), 
    'Team' => array(
     'name' => 'Proxy_B28' 
    ) 
), 
(int) 1 => array(
    'User' => array(
     'username' => 'testje', 
     'firstname' => 'jean', 
     'lastname' => 'test' 
    ), 
    'Calendar' => array(
     'period' => 'PM' 
    ), 
    'Shift' => array(
     'name' => 'HV', 
     'color' => '#b7fa00' 
    ), 
    'Team' => array(
     'name' => 'Proxy_B28' 
    ) 
) 
) 

И я хотел бы получить этот вид массива:

array(
    'User' => array(
     'username' => 'testje', 
     'firstname' => 'jean', 
     'lastname' => 'test' 
    ), 
    'Calendar' => array(
     'period' => 'Full day' 
    ), 
    'Shift' => array(
     'name' => 'HV', 
     'color' => '#b7fa00' 
    ), 
    'Team' => array(
     'name' => 'Proxy_B28' 
    ) 
) 

есть ли у вас какие-то советы, чтобы дать мне, чтобы получить этот результат?

спасибо!

+0

Я не понимаю ваш вопрос, что вы хотите в конечном итоге? –

+0

Единственное различие, которое я вижу, состоит в том, что 'Calendar => 'AM'' и' Calendar =>' PM'' объединяются с 'Calendar => 'Full day''? –

+0

Извините за мое плохое объяснение. Я попытался получить уникальный массив, потому что в приведенном выше примере строка HTML дублируется в моей таблице. Как пользователь может отсутствовать либо утром, либо днем, либо полным днем. если он полный, не нужно отображать его дважды. Так что мне было интересно, могу ли я создать уникальный массив из моего контроллера и отобразить уникальное значение в качестве результата. Но я пробовал много, но каждый раз, когда я не ожидаю результата. Спасибо! – Speud

ответ

-1

Я не знаю, если лучшее решение, но это, кажется, работает, как это и быстрее:

  foreach ($users as $k=>$v){    
      //$r[$k] = array_merge($v,$users[$k]); 
      //$unique[] = array_map("unserialize", array_unique(array_map("serialize", $users[$k]))); 

      $s[$k] = array(
       'username' => $v['User']['username'], 
       'team'  => $v['Team']['name'], 
       'period' => $v['Calendar']['period'] 
      ); 

      if ($k > 0) { 
       if (in_array($v['User']['username'],$s[$k])) { 
        unset($s[$k-1]); 
        $s[$k] = array(
         'username' => $v['User']['username'], 
         'team'  => $v['Team']['name'], 
         'period' => "FD" 
        ); 
       } 
      } 


     } 

У вас есть другая идея или это один достаточно хорошо? спасибо!

+0

Я знаю код, который не идеален ... но есть ли у вас советы по его улучшению? спасибо – Speud

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