php - 多维数组的数组合并
问题描述
我想将多维数组合并为单个数组。我想知道有没有人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
)
)
解决方案
要修复您的原始导入...
您的子函数 ( 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);
}
推荐阅读
- sql-server - 具有不同所有者的 SQL Server 所有权链跨架构,用于从多个架构中选择视图
- regex - 正则表达式匹配无限数量的连字符后跟数字
- javascript - amMap 移除home键控件
- sql - 具有一些重叠数据的两个 SQL 查询
- css - 悬停时的 CSS 过渡幻灯片菜单 - 固定功能
- ruby-on-rails - c9 - rails 看起来正在运行 - 无法访问应用程序
- haskell - 如何使用 Aeson 解析枚举?
- python - 使用 for 循环创建玩家上课
- clarion - Clarion - 将 APP 从 APV 导入解决方案时缺少程序参数
- google-sheets - 根据所选日期自动复制