PHP数组整数求和咨询:现有实现是否正确?有无其他方式?
计算混合数组中整数和的方法及当前实现验证
你的当前实现方法是正确的,逻辑清晰,能够准确筛选出数组中的整数并计算它们的总和,完全可以达成需求。不过借助PHP的内置函数,我们可以简化流程、提升效率,下面是几种更高效的实现方式:
1. array_filter() + array_sum()(最简洁的内置函数组合)
利用array_filter()直接筛选数组中的整数,再通过array_sum()一键计算总和,无需额外存储数组或二次遍历:
$arr = [1, 'a', 3.14, 5, true, '7', 9]; // 注:is_int()对布尔值true、字符串数字均返回false,和你的原逻辑完全一致 $intSum = array_sum(array_filter($arr, 'is_int')); echo $intSum; // 输出 15(1+5+9)
2. array_reduce()一步完成筛选+求和
通过array_reduce()在单次遍历中同时完成整数判断与累加,减少遍历次数:
$arr = [1, 'a', 3.14, 5, true, '7', 9]; $intSum = array_reduce($arr, function($carry, $item) { if (is_int($item)) { $carry += $item; } return $carry; }, 0); // 初始累加值设为0 echo $intSum; // 输出 15
3. 简化原逻辑:单次foreach直接累加
不需要创建额外数组存储筛选结果,直接在遍历原数组时判断并累加,节省内存开销:
$arr = [1, 'a', 3.14, 5, true, '7', 9]; $intSum = 0; foreach ($arr as $item) { if (is_int($item)) { $intSum += $item; } } echo $intSum; // 输出 15
内容的提问来源于stack exchange,提问作者New_guy_in_here
相关产品推荐
相关产品推荐

