2016-03-08 23 views
0

×2個陣列我有兩個數組合併在PHP

$arr1=Array 
(
    [0] => Array 
     (
      [0] => 'a' 
     ), 
    [1]=>Array 
     (
     [0]=>'b' 
     ), 
    [2] => Array 
     (
      [0] => 'c' 
     ), 
    [3]=>Array 
     (
     [0]=>'d' 
     ), 
[4]=>Array 
     (
     [0]=>'e' 
     ) 
); 
$arr2=array('1','2'); 

輸出應該

$arr3=Array 
(
    [0] => Array 
     (
      [0] => 'a', 
      [1]=>'1' 

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

     ), 
    [3]=>Array 
     (
     [0]=>'d', 
     [1]=>'2' 
     ), 
[4]=>Array 
     (
     [0]=>'e', 
     [1]=>'1' 
     ) 
); 

有人可以請建議我一些解決方案

+0

你有沒有嘗試過什麼來達到你的目標? – Rizier123

+0

嘗試'array_merge'函數http://php.net/manual/en/function.array-merge.php –

+0

可能的重複[在矩陣乘法在PHP](http://stackoverflow.com/questions/25220655/matrix -multiplication-in-php) –

回答

1

這個版本將允許$arr2包含任何數量的值,應該說是一個要求:

<?php 

$arr1 = [ 
    ['a'], ['b'], ['c'], ['d'], ['e'], 
]; 

$arr2 = ['1', '2']; 

// wrap the array in an ArrayIterator and then in an 
// InfiniteIterator - this allows you to continually 
// loop over the array for as long as necessary 

$iterator = new InfiniteIterator(new ArrayIterator($arr2)); 
$iterator->rewind(); // start at the beginning 

// loop over each element by reference 
// push the current value in `$arr2` into 
// each element etc. 
foreach ($arr1 as &$subArray) { 
    $subArray[] = $iterator->current(); 
    $iterator->next(); 
} 

print_r($arr1); 

這產生了:

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

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

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

    [3] => Array 
     (
      [0] => d 
      [1] => 2 
     ) 

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

) 

希望這有助於:)

+0

thanks.It工作就像一個魅力:) –

2

您可以用MultipleIterator做到這一點,並連接第一個陣列爲ArrayIterator,第二個陣列爲InfiniteIterator,例如

<?php 

    $arr1 = [["a"], ["b"], ["c"], ["d"], ["e"]]; 
    $arr2 = [1,2]; 
    $result = []; 

    $mIt = new MultipleIterator(); 
    $mIt->attachIterator(new ArrayIterator($arr1)); 
    $mIt->attachIterator(new InfiniteIterator(new ArrayIterator($arr2))); 

    foreach($mIt as $v) 
     $result[] = array_merge($v[0], [$v[1]]); 

    print_r($result); 

?> 
+0

以'InfiniteIterator'的方式領先於我! –

+1

@DarraghEnright你的意思是[infinity and beyond](http://imgur.com/1xzd6NV) – Rizier123

+0

哈哈!是的,的確如此:) –