PHP面试题:按规则计算整数数组总分的实现方法问询
PHP数组总分计算问题解法
规则明确(结合示例验证)
- 数组元素按以下规则累加总分:
- 元素为8时,加5分
- 元素为非8的偶数时,加1分
- 元素为奇数时,加3分
你的代码存在的问题
- 错误修改并输出
$val,而非对总分变量$total进行累加,完全偏离了“计算总分”的需求 - 对8的判断放在
foreach循环外部,仅会检查数组最后一个元素,无法遍历所有元素判断 - 没有返回最终计算的总分,函数调用后无法得到结果
- 逻辑顺序错误:未优先判断8的情况,会导致8被当作普通偶数处理(与示例结果矛盾)
正确实现代码
function find_total($my_numbers) { $total = 0; foreach ($my_numbers as $val) { // 优先判断8,因为8是偶数但有单独规则 if ($val === 8) { $total += 5; } elseif ($val % 2 === 0) { $total += 1; } else { $total += 3; } } return $total; } // 测试示例 echo find_total([1, 2, 3, 4, 5]); // 输出11 echo find_total([15, 25, 35]); // 输出9 echo find_total([8, 8]); // 输出10
代码说明
- 初始化
$total为0,作为总分的累加容器 - 遍历数组每个元素,按优先级从高到低判断:先检查是否为8,再判断偶数/奇数
- 每一步根据规则给
$total加分,循环结束后返回$total,调用函数即可得到最终总分
内容的提问来源于stack exchange,提问作者gill bates
相关产品推荐
相关产品推荐

