向二维数组中的每一行添加静态值

问题描述 投票:0回答:3

我有一个二维数组,如下图所示:

|1|2|3|
|4|5|6|

我正在尝试在其前面添加一列,如下所示:

|X|1|2|3|
|X|4|5|6|

使用 1array_unshift()

will cause the elements to become shuffled and I need them to be retained. I also tried
array_merge()` 以及“添加”新列与现有数组。

实现这一目标的最佳方法是什么?

php arrays multidimensional-array merge prepend
3个回答
0
投票
$arr = array(
    array(1,2,3),
    array(4,5,6)
);

foreach($arr as $k => $v){
    array_unshift($arr[$k],"X");
}
print_r($arr);

0
投票

您可以像

一样使用
array_map
array_push

$arr = [[1, 2, 3], [4, 5, 6]];
$result = array_map(function($v, $a) {
    $v = array_merge([$a],$v);
    return $v;
}, $arr, ['X', 'X']);

print_r($result);

演示


0
投票

对于现代的函数式代码片段,请在动态生成的包含新值和原始数组的数组数组上迭代调用

array_merge()

代码:(演示

var_export(
    array_map(
        'array_merge',
        array_fill(0, count($array), ['X']),
        $array
    )
);

或者:(演示

var_export(
    array_map(
        fn($row) => array_merge(['X'], $row),
        $array
    )
);

对于简洁、经典的循环,请在迭代时通过引用修改原始元素/行。同样,这种方法修改了原始数组。

代码:(演示

foreach ($array as &$row) {
    array_unshift($row, 'X');
}
var_export($array);

如果要将数据附加到每行的末尾,请在

array_merge()
调用中颠倒行和静态数据的顺序:
array_map(fn($row) => array_merge($row, ['X']))

使用非数字键合并数据时,您可以使用并集运算符 (

+
) 来合并,而不是使用
array_merge()
array_replace()
。如果使用联合运算符,请注意共享键不会妨碍在结果中使用所需的值。

© www.soinside.com 2019 - 2024. All rights reserved.