PHP:如何将长度相同的数组合并为多维数组,其中两个数组都成为值(而不是键)?

4

我有两个同样长度的数组,如下所示:

Array
(
    [0] => a
    [1] => b
    [2] => c
)

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

And I want to end up with this:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => 1
        )
    [1] => Array
        (
            [0] => b
            [1] => 2
        )
    [2] => Array
        (
            [0] => c
            [1] => 3
        )
) 
array_combine 函数会将上述值中的一个作为数组 键名,但我不需要这样做——我想要将两个数组的每个项目合并为一个新数组作为数组值。

是否有内置函数可以实现此功能,还是需要自己编写?

3个回答

2

如果有三个数组会怎么样? - talha2k
@AlphaMale $result[] = array($val, $array2[$i], $array3[$i]); - Petah
1
“Try this” 的回答在 Stackoverflow 上的价值很低。 - mickmackusa

1

有没有内置函数可以做到这一点

还是我必须自己编写?

不需要

通过调用 array_map() 并将 null 作为回调参数提供给它,然后提供 2 个或更多数组,它将按所需的方式重组您的数据。

代码:(演示)

$array1 = ['a', 'b', 'c'];
$array2 = [1, 2, 3];

var_export(array_map(null, $array1, $array2));

输出:

array (
  0 => 
  array (
    0 => 'a',
    1 => 1,
  ),
  1 => 
  array (
    0 => 'b',
    1 => 2,
  ),
  2 => 
  array (
    0 => 'c',
    1 => 3,
  ),
)

0
如果您有字符串键,可以使用array_merge_recursive将它们合并。但是,由于现在没有,您需要做其他事情。例如:
$result = Array();
$arrays = Array($array1,$array2...);
foreach($arrays as $arr) {
    foreach($arr as $k=>$v) $result[$k][] = $v;
}

虽然解决方案很简单,请解释一下您的片段对于新手php /编程研究人员有什么好处。 - mickmackusa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接