返回数组中某一列的和,其实说白了就是单列求和。
从上图可以看出,这是一个二维数组。
$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循环及参数的使用,较之前更为简便。推荐给大家。望能集思广益,写出更高效的代码!
网友评论
$cloumn = 5;
$sum = array_reduce($arr, function($carry, $item) use($cloumn){
return $carry + $item[$index];
});
搞定。