连接两个数组

3

我有两个数组,想把这两个数组合并成一个数组。我该如何完成这段代码,以及我在这里犯了什么错误:

以下是我的代码:

$intro = array( array( "name"=>"Peter","age"=>"40","location"=>"USA" ), 
            array("name"=>"Mike","age"=>"55","location"=>"USA")
);

$bikes = array( array( "brand"=>"Hero","cc"=>"150", "rpm"=>"8500"),
            array( "brand"=>"Honda","cc"=>"150", "rpm"=>"9500")
);

$result = array_merge($intro, $bikes);

print_r($result);

在合并这两个数组后,我得到了以下结果:
Array
(
    [0] => Array
        (
            [name] => Peter
            [age] => 40
            [location] => USA
        )

    [1] => Array
        (
            [name] => Mike
            [age] => 55
            [location] => USA
        )

    [2] => Array
        (
            [brand] => Hero
            [cc] => 150
            [rpm] => 8500
        )

    [3] => Array
        (
            [brand] => Honda
            [cc] => 150
            [rpm] => 9500
        )

)

但我想得到以下这种模式:

Array
(
    [0] => Array
        (
            [name] => Peter
            [age] => 40
            [location] => USA
            [brand] => Hero
            [cc] => 150
            [rpm] => 8500
        )
     [1] => Array
        (
            [name] => Mike
            [age] => 55
            [location] => USA
            [brand] => Yamaha
            [cc] => 150
            [rpm] => 9500
            
        )
    

)

非常感谢专家的帮助。

谢谢。


1
你可以使用 foreach ($array_expression as $key => $value) { 来实现,然后你就有了键,可以使用该键从另一个数组中获取条目,并将其推送到当前的 $value 数组中。 - Stender
3个回答

4

如果您想使用键合并和对齐它们,可以简单地使用传统的foreach

foreach ($intro as $k => $v) {
    $result[] = array_merge($v, $bikes[$k]);
}

或者使用 array_map 的一行代码:

$result = array_map('array_merge', $intro, $bikes);

1

array_map与自定义回调函数可以帮助解决问题:

$intro = array( 
    array( "name"=>"Peter","age"=>"40","location"=>"USA" ), 
    array("name"=>"Mike","age"=>"55","location"=>"USA")
);

$bikes = array( 
    array( "brand"=>"Hero","cc"=>"150", "rpm"=>"8500"),
    array( "brand"=>"Honda","cc"=>"150", "rpm"=>"9500")
);

$result = array_map(function($a, $b) {
    // here you merge every subarray from 
    // `$intro` with subarray from `$bikes`
    return array_merge($a, $b);
}, $intro, $bikes);

print_r($result);

在这里 测试


0
你可以这样做:
foreach ($intro as $k => $v) {
    $result[] = array_merge($v, $bikes[$k]);
}

结果 :

Array
(
[0] => Array
    (
        [name] => Peter
        [age] => 40
        [location] => USA
        [brand] => Hero
        [cc] => 150
        [rpm] => 8500
    )

[1] => Array
    (
        [name] => Mike
        [age] => 55
        [location] => USA
        [brand] => Honda
        [cc] => 150
        [rpm] => 9500
    )
)

这有什么不同于@Kevin的回答吗? - Nick
一样的事情,我写得更慢 :( - Skyd

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