首页 > 解决方案 > 多维数组的数组合并

问题描述

我想将多维数组合并为单个数组。我想知道有没有人php built in array_function可以做到这一点。我不想使用任何循环,因为我有来自导入文件的数据。可能有超过数千条记录。

我在这段代码下面生成这个数组:

$insert = array();
foreach ($data as $key => $value) {
   $insert[$key][] = [
        'name' => $value->name,
        'email' => $value->email,
        'mobile_no' => $value->mobile_no,
        'password' => bcrypt($value->password),
        'user_type_id' => $value->user_type_id,
        'designation' => $value->designation,

        $this->userTypeWiseFieldGenerateForImportInsert($value)
    ];
}

我的回调函数是

public function userTypeWiseFieldGenerateForImportInsert($data){
    if($data->user_type_id == 1){
        $insertArray['market_code'] = $data->market_code;
        $insertArray['product_code'] = $data->product_code;
        $insertArray['territori_code'] = $data->territori_code;
        $insertArray['region_code'] = $data->region_code;
        $insertArray['division_code'] = $data->division_code;
    }elseif($data->user_type_id == 2){
        $insertArray['territori_code'] = $data->territori_code;
        $insertArray['region_code'] = $data->region_code;
        $insertArray['division_code'] = $data->division_code;
    }elseif($data->user_type_id == 3){
        $insertArray['region_code'] = $data->region_code;
        $insertArray['division_code'] = $data->division_code;
    }elseif($data->user_type_id == 4){
        $insertArray['division_code'] = $data->division_code;
    }

    return $insertArray;
}

我得到这个数组:

Array(
  [0] => Array
      (
          [name] => Md. XXXX
          [email] => abc@gmail.com
          [mobile_no] => 1751017812
          [password] => $2y$10$6Vmr61t896IxfJ1A0pxX5Of1hnfUVX9blmdmclAxt56cMd754NkDC
          [user_type_id] => 1
          [designation] => Sr. Software Engineer
          [0] => Array
              (
                  [market_code] => mirpurA203
                  [product_code] => Seclo201
                  [territori_code] => T352
                  [region_code] => Mirpur334
                  [division_code] => Dhaka31
              )
      )

  [1] => Array
      (
          [name] => Md. XX
          [email] => def@gmail.com
          [mobile_no] => 1761017812
          [password] => $2y$10$62fwqiAmrv.Jc89i5L3YNuMpcYeFVrpqewuBPKYIgmXiX/9sGRC/S
          [user_type_id] => 2
          [designation] => Sr. Software Engineer
          [0] => Array
              (
                  [territori_code] => T352
                  [region_code] => Mirpur334
                  [division_code] => Dhaka31
              )
      )
) 

我希望制作单个数组,例如:

Array(
[0] => Array
    (
        [name] => Md. XXXX
        [email] => abc@gmail.com
        [mobile_no] => 1751017812
        [password] => $2y$10$6Vmr61t896IxfJ1A0pxX5Of1hnfUVX9blmdmclAxt56cMd754NkDC
        [user_type_id] => 1
        [designation] => Sr. Software Engineer
        [market_code] => mirpurA203
        [product_code] => Seclo201
        [territori_code] => T352
        [region_code] => Mirpur334
        [division_code] => Dhaka31
    )

[1] => Array
    (
        [name] => Md. XX
        [email] => def@gmail.com
        [mobile_no] => 1761017812
        [password] => $2y$10$62fwqiAmrv.Jc89i5L3YNuMpcYeFVrpqewuBPKYIgmXiX/9sGRC/S
        [user_type_id] => 2
        [designation] => Sr. Software Engineer
        [territori_code] => T352
        [region_code] => Mirpur334
        [division_code] => Dhaka31
    )
)

标签: phparrayslaravel

解决方案


要修复您的原始导入...

您的子函数 ( userTypeWiseFieldGenerateForImportInsert()) 首先将子数组添加到数据中,您可以改为从初始数据创建一个部分,然后合并来自此函数调用的附加数据...

foreach ($data as $key => $value) {
    $newData = [
        'name' => $value->name,
        'email' => $value->email,
        'mobile_no' => $value->mobile_no,
        'password' => bcrypt($value->password),
        'user_type_id' => $value->user_type_id,
        'designation' => $value->designation,
    ];
    $additionalData = $this->userTypeWiseFieldGenerateForImportInsert($value);

    $insert[$key][] = array_merge($newData, $additionalData);
}

推荐阅读