PHP遍历双数组时首数组去重并聚合对应值实现目标输出
PHP 双同索引数组按$A去重聚合对应$B值实现
实现思路
- 直接以$A数组的元素值作为聚合键,从根源实现$A重复值去重,无需额外调用
array_unique方法 - 遍历两个数组的同索引元素时,对$B值做三层校验:去除前后空白、跳过空值、过滤重复的B值,避免无效内容拼接
- 输出阶段动态判断当前聚合组是否有有效B值,匹配要求的格式细节
完整可运行代码
$A = array('0' => '1451', '1' => '1451', '2' => '1452', '3' => '1452', '4' => '1453', '5' => '1453', '6' => '1457', '7' => '1460'); $B = array('0' => '22', '1' => '23', '2' => '22', '3' => '23', '4' => '22', '5' => '23', '6' => '', '7' => ''); // 初始化存储聚合结果的容器 $groupResult = []; // 同步遍历两个数组的同索引元素 foreach ($A as $idx => $aItem) { $bItem = trim($B[$idx] ?? ''); // 初始化当前A值对应的B值存储列表 if (!isset($groupResult[$aItem])) { $groupResult[$aItem] = []; } // 仅保留非空、未重复的B值 if ($bItem !== '' && !in_array($bItem, $groupResult[$aItem])) { $groupResult[$aItem][] = $bItem; } } // 按要求格式输出 foreach ($groupResult as $aNum => $bValues) { $lineOutput = $aNum . ' ='; // 仅当存在有效B值时追加空格和拼接内容 if (!empty($bValues)) { $lineOutput .= ' ' . implode(', ', $bValues); } echo $lineOutput . '<br />'; }
实际输出效果
1451 = 22, 23<br /> 1452 = 22, 23<br /> 1453 = 22, 23<br /> 1457 =<br /> 1460 =<br />
代码兼容场景:如果后续$A的重复项对应的$B值出现重复,也会自动去重不会重复拼接;如果$B值存在前后空白字符,会自动清理后再判断是否有效。
内容的提问来源于stack exchange,提问作者chris
相关产品推荐
相关产品推荐

