codewars刷题之sum of positive

Sum of positive 计算所有正数的和

You get an array of numbers, return the sum of all of the positives ones.

Example [1,-4,7,12] => 1 + 7 + 12 = 20

Note: if there is nothing to sum, the sum is default to 0.

获取数组中所有正数的和,如果都不是正数,则输出和为0。

我的答案

function positive_sum($arr)
{
    $sum = 0;
    foreach ($arr as $v) {
        if ($v > 0) {
            $sum += $v;
        }
    }
    return $sum;
}

人气最高答案

function positive_sum($a)
{
    return array_sum(array_filter($a, function ($n) {
        return $n > 0;
    }));
}

知识点

  1. array_sum()

函数返回数组中所有值的和。

如果所有值都是整数,则返回一个整数值。如果其中有一个或多个值是浮点数,则返回浮点数。

  1. array_filter()

函数用回调函数过滤数组中的值。

该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变。

反思

作为一道8 kyu的题目,我用了比较常规无脑的写法,用foreach遍历数组,再用if来做判断求和,虽然能达到目的,但看了人气答案后,感觉自己对php自带的一些数组函数非常不熟悉,这是一件很可怕的事情。要加强基础知识的恶补。

首发地址:codewars刷题之sum of positive

你可能感兴趣的:(codewars刷题之sum of positive)