使用PHP查找数组中两数之和仍在原数组中的数对
修正后的PHP代码实现需求
原代码的核心问题是判断条件错误,且仅统计数量未输出实际符合条件的数对。以下是修正后的代码,可找出所有两数之和存在于原数组中的数对并输出:
$input = [1, 2, 5, 3]; $length = count($input) - 1; $validPairs = []; // 遍历所有不重复的数对(i < j 避免重复统计同一对) for ($i = 0; $i <= $length; $i++) { for ($j = $i + 1; $j <= $length; $j++) { $sum = $input[$i] + $input[$j]; // 检查两数之和是否存在于原数组中 if (in_array($sum, $input)) { // 将数对按升序排列后存入,避免重复存储(比如[2,1]和[1,2]视为同一对) $pair = [$input[$i], $input[$j]]; sort($pair); $validPairs[implode(',', $pair)] = $pair; } } } // 输出结果 echo "符合条件的数对:\n"; foreach ($validPairs as $pair) { echo $pair[0] . " 和 " . $pair[1] . "\n"; }
代码说明
- 替换原错误判断条件:不再判断两数之和为0,改用
in_array()检查和是否存在于原数组中 - 新增
$validPairs数组存储符合条件的数对,通过键名去重,避免同一数对被重复记录 - 最终遍历输出有效数对,结果与示例一致:
1 和 2、3 和 5
内容的提问来源于stack exchange,提问作者Rajesh
相关产品推荐
相关产品推荐

