将一个数组添加到多维数组
Add one array to a multidimensional array
我想将数组 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++;
}
这应该很简单:
$a = [[1, 2],[4, 5],[7, 8]];
$b = [3, 6, 9];
foreach($a as $key => &$arr){
$arr[] = $b[$key];
}
这并不难。
<?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]);
}
?>
此处我们使用 array_walk
来实现所需的输出。希望这会有所帮助。
<?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);
$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);
这是其他人都没有想到的巧妙的单行代码:
代码:(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()
具有更高的性能优势(尽管老实说,我是基于我提供的其他类似答案,但我没有实际上对这种情况进行了基准测试。
我想将数组 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++;
}
这应该很简单:
$a = [[1, 2],[4, 5],[7, 8]];
$b = [3, 6, 9];
foreach($a as $key => &$arr){
$arr[] = $b[$key];
}
这并不难。
<?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]);
}
?>
此处我们使用 array_walk
来实现所需的输出。希望这会有所帮助。
<?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);
$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);
这是其他人都没有想到的巧妙的单行代码:
代码:(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()
具有更高的性能优势(尽管老实说,我是基于我提供的其他类似答案,但我没有实际上对这种情况进行了基准测试。