我有一个二维数组,如下图所示:
|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()` 以及“添加”新列与现有数组。
实现这一目标的最佳方法是什么?
$arr = array(
array(1,2,3),
array(4,5,6)
);
foreach($arr as $k => $v){
array_unshift($arr[$k],"X");
}
print_r($arr);
您可以像
一样使用
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);
对于现代的函数式代码片段,请在动态生成的包含新值和原始数组的数组数组上迭代调用
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()
。如果使用联合运算符,请注意共享键不会妨碍在结果中使用所需的值。