PHP多数组关联生成指定格式CSV文件技术求助
解决方案
原来的代码直接按数组索引匹配内容,但新SKU数组的元素和原数组的索引完全不对应(比如前两个新SKU都属于原第一个SKU的衍生项),核心问题是要通过提取新SKU的基础前缀来关联原数组的标题和描述。下面是具体的实现方案:
// 第一步:先构建原SKU到标题、描述的映射表,方便快速查找 $skuMapping = []; foreach ($array_sku as $index => $baseSku) { $skuMapping[$baseSku] = [ 'title' => $array_Title[$index], 'description' => $array_Description[$index] ]; } // 第二步:处理新SKU数组,生成目标数据 $prods = []; foreach ($array_sku_new as $newSku) { // 提取基础SKU部分:用'-'分割,只分一次(避免多后缀SKU拆分错误) $parts = explode('-', $newSku, 2); $baseSku = $parts[0]; // 从映射表获取对应内容,找不到时设置默认值避免报错 $title = $skuMapping[$baseSku]['title'] ?? '未知标题'; $description = $skuMapping[$baseSku]['description'] ?? '未知描述'; $prods[] = [ 'SKU' => $newSku, 'TITLE' => $title, 'DESCRIPTION' => $description ]; }
关键细节说明
- 映射表构建:把原SKU作为键,对应的标题和描述作为值存入数组,后续查找内容的时间复杂度是O(1),比每次遍历原数组高效很多。
- 基础SKU提取:
explode('-', $newSku, 2)的第三个参数2确保只拆分一次,哪怕遇到first-A-B这种带多个后缀的SKU,也能正确提取基础部分first。 - 容错处理:用PHP7+的空合并运算符
??处理基础SKU不存在的情况,你可以根据业务需求调整默认值(比如设为空字符串)。
处理后$prods数组会正确关联所有衍生SKU与原内容:
first-A/first-B→ 对应原first的标题和描述second-VG/second-RT/second-C→ 对应原second的标题和描述third→ 直接对应原third的内容
内容的提问来源于stack exchange,提问作者user10840327
相关产品推荐
相关产品推荐

