如何基于商品变体数组生成选项值关联规则数组?
如何生成商品变体的关联option_value映射数组?
我来帮你搞定这个问题!其实核心逻辑就是遍历每个商品变体的组合,为每个option_value建立和同组内其他option_value的双向关联映射,具体实现步骤和代码示例如下:
实现思路
- 初始化一个空数组,用来存储最终的关联映射关系
- 遍历每一组商品变体(也就是原数组里的每个子数组)
- 针对当前变体里的每一个option_value,找出同组内剩下的其他option_value
- 将这些关联的option_value添加到当前option_value的关联列表中,同时确保双向关联都被记录
代码示例(PHP)
// 给定的商品变体数组 $variants = [ ["2_12", "4_9"], ["2_3", "4_9"], ["2_4", "4_10"], ]; // 初始化目标映射数组 $optionMap = []; foreach ($variants as $variant) { // 遍历当前变体中的每个option_value foreach ($variant as $currentOpt) { // 筛选出当前变体中除自身外的所有关联选项 $relatedOpts = array_filter($variant, fn($opt) => $opt !== $currentOpt); // 如果当前选项还未在映射中,先初始化空数组 if (!isset($optionMap[$currentOpt])) { $optionMap[$currentOpt] = []; } // 合并关联选项到当前选项的列表中 $optionMap[$currentOpt] = array_merge($optionMap[$currentOpt], $relatedOpts); // 可选:如果需要去除重复的关联项(比如同一个选项多次关联同一个值),可以加上这行 // $optionMap[$currentOpt] = array_unique($optionMap[$currentOpt]); } } // 输出结果 print_r($optionMap);
代码说明
- 外层循环遍历每一组商品变体,内层循环处理组内的每个option_value
- 使用
array_filter过滤掉当前选项自身,得到同组内的其他关联选项 - 通过
array_merge将新的关联选项合并到已有列表中,保证所有关联关系都被记录 - 如果你担心同一个option_value会重复关联同一个值,可以加上
array_unique来去重
运行这段代码后,你就能得到和示例完全一致的目标数组啦!
内容的提问来源于stack exchange,提问作者calin24
相关产品推荐
相关产品推荐

