2013-08-27 4 views
0

에 배열 값을 결합하는 방법이 배열 변환 할 수 있습니다 :이 하나PHP는 -/병합 다차원 배열

$a = array(
0 => array(
    0 => 31, 
    1 => 39 
), 
1 => array(
    0 => 41 
) 
); 

을 : 나는 여러 가지 방법을 시도

$a = array(
    0 => array(
     0 => array(
      0 => 31, 
      1 => 41 
     ), 
     1 => array(
      0 => 39, 
      1 => 41 
     ) 
    ), 
    1 => array(
     0 => array(
      0 => 41, 
      1 => 31 
     ), 
     1 => array(
      0 => 41, 
      1 => 39 
     ) 
    ) 
); 

,하지만 적절한 해결책을 찾을 수 없습니다. 그 순간에 나의 뇌는 과열되었다. 어쩌면 누군가가 나를위한 해결책을 가지고있을 것입니다.

감사합니다. @Manos.

불행하게도 동적 배열이 있습니다. 그래서 이러한 정적 기능은 나를 위해 작동하지 않을 것입니다.

그래서 배열은 다음과 같을 수 있습니다 :

$a = array(
0 => array(
    0 => 31, 
    1 => 39 
), 
1 => array(
    0 => 41, 
    1 => 49, 
    2 => 51 
), 
2 => array(
    0 => 73 
) 
); 

출력은 다음과 같아야합니다

$a = array(
     0 => array(
      0 => array(
       0 => 31, 
       1 => 41, 
       2 => 73 
      ), 
      1 => array(
       0 => 31, 
       1 => 49, 
       2 => 73 
      ), 
      2 => array(
       0 => 31, 
       1 => 51, 
       2 => 73 
      ), 
      3 => array(
       0 => 39, 
       1 => 41, 
       2 => 73 
      ), 
      4 => array(
       0 => 39, 
       1 => 49, 
       2 => 73 
      ), 
      5 => array(
       0 => 39, 
       1 => 51, 
       2 => 73 
     ), 
     1 => array(
      0 => array(
       0 => 41, 
       1 => 31, 
       2 => 73 
      ), 
      1 => array(
       0 => 41, 
       1 => 39, 
       2 => 73 
      ), 
      2 => array(
       0 => 49, 
       1 => 31, 
       2 => 73 
      ), 
      3 => array(
       0 => 49, 
       1 => 39, 
       2 => 73 
      ), 
       etc ...... 
     ) 
    ); 

마 노스 기능 출력 :

array(3) { 
    [0]=> 
    array(8) { 
    [0]=> 
    array(2) { 
     [0]=> 
     int(31) 
     [1]=> 
     int(41) 
    } 
    [1]=> 
    array(2) { 
     [0]=> 
     int(39) 
     [1]=> 
     int(41) 
    } 
    [2]=> 
    array(2) { 
     [0]=> 
     int(31) 
     [1]=> 
     int(49) 
    } 
    [3]=> 
    array(2) { 
     [0]=> 
     int(39) 
     [1]=> 
     int(49) 
    } 
    [4]=> 
    array(2) { 
     [0]=> 
     int(31) 
     [1]=> 
     int(51) 
    } 
    [5]=> 
    array(2) { 
     [0]=> 
     int(39) 
     [1]=> 
     int(51) 
    } 
    [6]=> 
    array(2) { 
     [0]=> 
     int(31) 
     [1]=> 
     int(73) 
    } 
    [7]=> 
    array(2) { 
     [0]=> 
     int(39) 
     [1]=> 
     int(73) 
    } 
    } 
    [1]=> 
    array(9) { 
    [0]=> 
    array(2) { 
     [0]=> 
     int(41) 
     [1]=> 
     int(31) 
    } 
    [1]=> 
    array(2) { 
     [0]=> 
     int(49) 
     [1]=> 
     int(31) 
    } 
    [2]=> 
    array(2) { 
     [0]=> 
     int(51) 
     [1]=> 
     int(31) 
    } 
    [3]=> 
    array(2) { 
     [0]=> 
     int(41) 
     [1]=> 
     int(39) 
    } 
    [4]=> 
    array(2) { 
     [0]=> 
     int(49) 
     [1]=> 
     int(39) 
    } 
    [5]=> 
    array(2) { 
     [0]=> 
     int(51) 
     [1]=> 
     int(39) 
    } 
    [6]=> 
    array(2) { 
     [0]=> 
     int(41) 
     [1]=> 
     int(73) 
    } 
    [7]=> 
    array(2) { 
     [0]=> 
     int(49) 
     [1]=> 
     int(73) 
    } 
    [8]=> 
    array(2) { 
     [0]=> 
     int(51) 
     [1]=> 
     int(73) 
    } 
    } 
    [2]=> 
    array(5) { 
    [0]=> 
    array(2) { 
     [0]=> 
     int(73) 
     [1]=> 
     int(31) 
    } 
    [1]=> 
    array(2) { 
     [0]=> 
     int(73) 
     [1]=> 
     int(39) 
    } 
    [2]=> 
    array(2) { 
     [0]=> 
     int(73) 
     [1]=> 
     int(41) 
    } 
    [3]=> 
    array(2) { 
     [0]=> 
     int(73) 
     [1]=> 
     int(49) 
    } 
    [4]=> 
    array(2) { 
     [0]=> 
     int(73) 
     [1]=> 
     int(51) 
    } 
    } 
} 

답변

1
foreach ($a as $first_group_key => $first_group) { 
    foreach ($a as $second_group_key => $second_group) { 
     if ($second_group_key == $first_group_key) { 
      continue; 
     } 
     $i = count($b[$first_group_key]); 
     foreach ($second_group as $second_value) { 
      foreach ($first_group as $first_key => $first_value) { 
       $b[$first_group_key][$i][0] = $first_value; 
       $b[$first_group_key][$i][1] = $second_value; 
       $i++; 
      } 
     } 
    } 
} 
+0

감사합니다 마 노스를. 그러나 이것은 나를 위해 작동하지 않습니다. 나는 동적 배열을 가지고있다. (위의 예를 보라) 정적 함수가 나를 위해 작동하지 않을 것이다. – user2720977

+0

업데이트 된 답변을 확인하십시오! – Manos

+0

예. 너는 그 사람이야. – user2720977