【问题标题】:Join Two arrays加入两个数组
【发布时间】:2020-09-08 06:59:46
【问题描述】:

我有两个数组,我想将这些数组合并为一个数组。我怎样才能完成这段代码以及我在这里的错误:

下面是我的代码:

$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
            
        )
    

)

专家的任何帮助都将受到高度赞赏。

谢谢

【问题讨论】:

  • 您可以使用foreach ($array_expression as $key => $value) { 执行此操作,然后您拥有密钥,并且可以使用该密钥从另一个数组中获取条目,并将其推送到当前的 $value 数组中。

标签: php arrays foreach


【解决方案1】:

如果您希望它们使用键合并和排列,您可以简单地使用 good ol' foreach:

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

或者使用array_map的单线:

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

【讨论】:

    【解决方案2】:

    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);
    

    小提琴here.

    【讨论】:

      【解决方案3】:

      你可以这样做:

      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 的回答有何不同?
      • 都是一样的,我写的比较慢:(
      猜你喜欢
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 2011-03-06
      • 2019-05-12
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      相关资源
      最近更新 更多