2015-01-22 4 views
-1

Я пытаюсь объединить два массива вместе, однако я не могу понять, как это сделать.Слияние двух простых массивов в многомерный массив

первый массив:

Array 
(
    [0] => a 
    [1] => b 
    [2] => c 
) 

второго массива:

Array 
(
    [0] => 1 
    [1] => 1 
) 

То, что я пытаюсь достичь:

Array 
(
    [0] => Array 
     (
      [0] => a 
      [1] => 1 
     ) 

    [1] => Array 
     (
      [0] => b 
      [1] => 1 
     ) 

    [2] => Array 
     (
      [0] => c 
     ) 
) 

Я знаю, что это очень просто достичь, но мой мозг отказывается сотрудничать. Может быть, мне нужно больше кофе ...

// Спасибо за все downvotes :)

+2

Выпейте чашку кофе и подумайте о цикле 'for' или' foreach' и заполните значение в новом массиве. –

ответ

2

Простой foreach итерировать :

$a = array('a', 'b', 'c'); 
$b = array(1, 1); 

$result = array(); 

foreach($a as $key => $value) { 
    $tmp = array($value); 
    if (isset($b[$key])) { 
     $tmp[] = $b[$key]; 
    } 
    $result[] = $tmp; 
} 

print_r($result); 

И результат:

Array 
(
    [0] => Array 
     (
      [0] => a 
      [1] => 1 
     ) 

    [1] => Array 
     (
      [0] => b 
      [1] => 1 
     ) 

    [2] => Array 
     (
      [0] => c 
     ) 

) 
+0

Спасибо большое! :) – Artano

+0

Я думаю, что ответ @georg тоже хорош. –

0

Может быть, не самый лучший способ, но он должен работать в этом случае:

$newArray = array(); 
foreach ($array1 as $index => $row) { 
    $newArray[$index] = array($row); 
    if (isset($array2[$index])) { 
     $newArray[$index][] = $array2[$index]; 
    } 
} 
2

Это называется "сжать" и может быть сделана в PHP с array_map, когда первым аргументом null:

$x = ['a', 'b', 'c']; 
$y = [1, 2]; 

$z = array_map(null, $x, $y); 
print_r($z); 

Результат:

Array 
(
    [0] => Array 
     (
      [0] => a 
      [1] => 1 
     ) 

    [1] => Array 
     (
      [0] => b 
      [1] => 2 
     ) 

    [2] => Array 
     (
      [0] => c 
      [1] => 
     ) 

) 
0
//1st Array: 
$array_1 = array(0=>'a',1=>'b',2=>'c'); 

//2nd Array: 
$array_2 = array(0=>1,1=>1); 

//Result: 
$holder = array(); 


for($i =0 ; $i <= max(count($array_1),count($array_2)); $i++){ 
    if(isset($array_1[$i])){ 
     $holder[$i][] = $array_1[$i]; 
    } 

    if(isset($array_2[$i])){ 
     $holder[$i][] = $array_2[$i]; 
    } 
} 

//Required Result: 
print_r($holder); 

Надеется, что это помогает ...; p

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