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

Я попробовал несколько способов, но не находят должного решения. В настоящий момент мой мозг перегрет. Так что, возможно, у кого-то есть решение для меня.

Thanks @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 ...... 
     ) 
    ); 

Manos функция Выход:

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

Спасибо Manos. Но это не работает для меня. У меня есть динамические массивы (см., Например, выше), поэтому ваша статическая функция не будет работать для меня. – user2720977

+0

проверьте обновленный ответ! – Manos

+0

Да. Ты мужчина. – user2720977

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