2014-12-17 6 views
-1

PHP에서 여러 다차원 배열을 병합하는 데 어려움이 있습니다. 나는 여러 가지 방법으로 시도했지만, 매번 결과를 얻지 못했습니다. 나는 (array_unique, ...) array_merge으로 시도하고 다른 포스트에서 나는 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

나는 fastly 최선의 해결책이 있지만, 이렇게 작동하는 것 같다 알고, 그리고하지 않습니다

  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