将一个数组添加到多维数组中

时间:2017-07-17 14:57:07

标签: php multidimensional-array array-merge indexed

我想将数组b的值添加到数组a:

$a = [[1, 2],[4, 5],[7, 8]];
$b = [3, 6, 9];

结果应该是:

$result = [[1, 2, 3],[4, 5, 6],[7, 8, 9]];

我正在尝试这个(还有很多其他东西)但是没有得到它。

foreach ($a as $el) {
    $i = 0; 
    $el[] = $b[$i];
    $i++;
}

5 个答案:

答案 0 :(得分:5)

这里我们使用array_walk来实现所需的输出。希望这会有所帮助。

Try this code snippet here

<?php
ini_set('display_errors', 1);
$a = [[1, 2],[4, 5],[7, 8]];
$b = [3, 6, 9];

array_walk($a,function(&$value,$key) use($b){
    array_push($value, $b[$key]);
});
print_r($a);

答案 1 :(得分:4)

这应该简单如下:

$a = [[1, 2],[4, 5],[7, 8]];          
$b = [3, 6, 9];
foreach($a as $key => &$arr){
    $arr[] = $b[$key];
}

答案 2 :(得分:3)

这并不难。

<?php
$a = [[1, 2],[4, 5],[7, 8]];
$b = [3, 6, 9];
for($i = 0; $i < count($b);$i++) {
    array_push($a[$i],$b[$i]);
}
?>

答案 3 :(得分:0)

$a = [[1, 2],[4, 5],[7, 8]];
$b = [3, 6, 9];
$result = $a;
foreach ($a as $key => $val) {
    if(!empty($b[$key])) {
        array_push($result[$key], $b[$key]);
    }
}

var_export($result);

答案 4 :(得分:0)

这是其他人没有想到的聪明的单行:

代码:(Demo

$a = [[1, 2],[4, 5],[7, 8]];          
$b = [3, 6, 9];

var_export(array_map('array_merge',$a,array_chunk($b,1)));

输出:

array (
  0 => 
  array (
    0 => 1,
    1 => 2,
    2 => 3,
  ),
  1 => 
  array (
    0 => 4,
    1 => 5,
    2 => 6,
  ),
  2 => 
  array (
    0 => 7,
    1 => 8,
    2 => 9,
  ),
)

此方法将$b拆分为与$a相同的结构,然后将它们合并在一起很简单。

如果您的输入数组相对较小,foreach()可能是最佳选择。随着您的输入数组的大小增加,我相信您会发现我的方法将比foreach()具有更高的性能优势(尽管我说实话我基于我提供的其他类似答案) #39; t实际上对此案例进行了基准测试。)