美文网首页Web 开发PHP实战PHP经验分享
[PHP]返回数组中某一列的和

[PHP]返回数组中某一列的和

作者: 夜航星osmo | 来源:发表于2017-08-04 14:59 被阅读197次
这是一张效果图

返回数组中某一列的和,其实说白了就是单列求和。

从上图可以看出,这是一个二维数组。

$arr = array(   

    array(1,2,3,4,5,6),

    array(6,5,4,3,2,1),

    array(1,2,3,4,5,6),

    array(6,5,4,3,2,1)

)

此时,我们要求最后一列(下标为5的值)的总和,我们将要用到一下方法:

/*

* 返回数组中某一列的和 (数组中的值为数字)

* @param $array  数据数组

* @param $columnName  列名

*/

function sumValueInArray($array,$columnName)

{

    $rtn = 0;

    if(!is_null($array) && count($array) > 0)

    {

        foreach ($array as $key => $value) {

            if(!is_null($value) && array_key_exists($columnName, $value))

            {

            $rtn = $rtn + $value[$columnName];

            }

        }

    }

    return $rtn;

}

    $res = sumValueInArray($arr,5);

输出结果与效果图一致

此方法可用来处理流水记录,如有更多方法,欢迎留言!

更新一下,除上述方法之外,利用数组函数array_reduce(),通过自定义闭包函数返回结果

function sumValuesInArray($array, $columnName)

{

    $sum = array_reduce($array, function($carry, $item) use($columnName){

        return $carry + $item[$columnName];

    });

    return $sum;

}

$res = sumValueInArray($arr,2);

echo $res;

输出结果亦为单列值的和。

这里通过使用闭包函数,减少了条件判断,foreach循环及参数的使用,较之前更为简便。推荐给大家。望能集思广益,写出更高效的代码!

相关文章

网友评论

  • e620d62671d7:还以为会是个算法题…
    夜航星osmo:@AUCG 你可以自己写一个算法
  • 梅皋月:兄台写的文章我一个看不懂,神呼
    夜航星osmo:@小丸子格格 哈哈哈,没事 不懂最好
  • 摩凝:你那改过的也是多此一举呀,直接就是结果,还要这个函数⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄
    夜航星osmo:@摩凝 为什么会bug修不完,这不就是一个单独的方法么
    摩凝:@Aeggainety 会让你做项目的时候 bug 修不完的。看点好书呀
    夜航星osmo:@摩凝 这样上下对比起来更清楚
  • 摩凝:太啰嗦了!

    $cloumn = 5;
    $sum = array_reduce($arr, function($carry, $item) use($cloumn){
    return $carry + $item[$index];
    });

    搞定。
    夜航星osmo:@摩凝 我发现了:smile:
    摩凝:@Aeggainety 把 column 写成 index 了:-P
    夜航星osmo:刚刚试了一下,膜拜大佬

本文标题:[PHP]返回数组中某一列的和

本文链接:https://www.haomeiwen.com/subject/dqwvlxtx.html