4

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

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

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

我想结束这个:

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

array_combine会将上述一组值变成数组,这是我不想要的——我希望两者都以数组值结尾,将两个数组的每个项目组合成一个新数组。

是否有内置功能可以做到这一点,还是我必须自己动手?

4

3 回答 3

2

尝试这个:

$result = array();
foreach ($array1 as $i => $val) {
    $result[] = array($val, $array2[$i]);
}

http://codepad.viper-7.com/Jx5H1Q

于 2012-09-14T00:47:01.167 回答
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,
  ),
)
于 2019-01-21T14:48:44.233 回答
0

如果你有字符串键,你可以array_merge_recursive用来合并它们。但是,实际上,您需要做其他事情。例如:

$result = Array();
$arrays = Array($array1,$array2...);
foreach($arrays as $arr) {
    foreach($arr as $k=>$v) $result[$k][] = $v;
}
于 2012-09-14T00:51:22.927 回答