PHP如何一次循环遍历多个不同长度数组合并生成新数组
问题原因
- 你当前以
CollateralType数组为循环基准,它的长度只有2,所以循环最多执行2次,无法获取到长度为3的GuarantorName、GuarantorNumber数组中的第三个元素 - 代码中重复定义了
CollateralStatus键,后一次赋值会直接覆盖前一次的内容,属于笔误 - 多数组长度不一致时,需要先取所有数组的最大长度作为循环次数基准,同时增加下标存在性判断避免报错
解决代码
// 计算所有待处理数组的最大长度,作为循环基准 $maxLength = max( count($request->CollateralType), count($request->CollateralStatus), count($request->GuarantorName), count($request->GuarantorNumber) ); // 初始化目标数组 $targetArr = []; // 单次循环完成所有数据组装 for ($i = 0; $i < $maxLength; $i++) { $targetArr[] = [ 'MaritalStatus' => $request->MaritalStatus, 'CollateralType' => $request->CollateralType[$i] ?? null, 'CollateralStatus' => $request->CollateralStatus[$i] ?? null, 'GuarantorName' => $request->GuarantorName[$i] ?? null, 'GuarantorNumber' => $request->GuarantorNumber[$i] ?? null ]; }
逻辑说明
用PHP7+的??运算符做简写判断,对应下标不存在时会默认赋值为null,你也可以根据业务需求替换为其他默认值,或者增加判断逻辑,过滤掉抵押物/担保人字段全为空的条目。最终生成的$targetArr会包含所有数组的全量元素。
内容的提问来源于stack exchange,提问作者Melx
相关产品推荐
相关产品推荐

