在php

时间:2016-03-08 17:07:06

标签: php arrays merge

我有两个数组

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

有人可以建议我一些解决方案

2 个答案:

答案 0 :(得分: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);

?>

答案 1 :(得分:1)

如果需要,此版本将允许st_包含任意数量的值:

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

希望这会有所帮助:)