我如何在PHP中组合三个数组

时间:2016-08-14 06:25:07

标签: php arrays

我有三个数组例如

Array1
array (size=3)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)

Array2
array (size 3)
0 => string '$' (length=1)
1 => string '%' (length=1)
2 => string '^' (length=1)

Array3
array (size 3)
0 => int '1' (length=1)
1 => int '2' (length=1)
2 => int '3' (length=1)

我希望array4具有这种配置,每个阵列的每一行应该是一个组。例如

Array4
0th 
name=a
type=$
price=1

1st
name=b
type=%
price=2

2nd
name=c
type=^
price=3

我试过这个并给了我完美的结果

$output = array_combine($array1, $array2);

但是当我尝试这个时,它不会给出预期的结果

$output = array_combine(array_combine($array, $array2),$array3);

2 个答案:

答案 0 :(得分:2)

如果您知道所有三个数组都具有相同的长度并且具有所有必需的数据,那么一个简单的修复就是迭代该长度并构建结果数组:

$result = []; 
$count = count($array1);
for($i=0; $i < $count; $i++){
    $result[$i] = [
        'name'=>$array1[$i],
        'type'=>$array2[$i],
        'price'=>$array3[$i]
    ];
}

$result拥有您需要的东西。您正在尝试的内容 - array_combined() - 不是用其他值创建一个数组,因此它不能用于此目的。该函数用于构建一个数组,其键来自一个数组,而值来自另一个数组。

答案 1 :(得分:1)

使用array_maparray_combine函数的简单解决方案:

$result = array_map(function($item) {
    return array_combine(['name', 'type', 'price'], $item);
}, array_map(null, $array1, $array2, $array3));

print_r($result);

输出:

Array
(
    [0] => Array
        (
            [name] => a
            [type] => $
            [price] => 1
        )

    [1] => Array
        (
            [name] => b
            [type] => %
            [price] => 2
        )

    [2] => Array
        (
            [name] => c
            [type] => ^
            [price] => 3
        )
)