返回?cái)?shù)組中某一列的和,其實(shí)說白了就是單列求和族奢。
從上圖可以看出懈玻,這是一個(gè)二維數(shù)組。
$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)
)
此時(shí)箭启,我們要求最后一列(下標(biāo)為5的值)的總和壕翩,我們將要用到一下方法:
/*
* 返回?cái)?shù)組中某一列的和 (數(shù)組中的值為數(shù)字)
* @param $array? 數(shù)據(jù)數(shù)組
* @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);
此方法可用來處理流水記錄,如有更多方法傅寡,歡迎留言放妈!
更新一下,除上述方法之外荐操,利用數(shù)組函數(shù)array_reduce()芜抒,通過自定義閉包函數(shù)返回結(jié)果
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;
輸出結(jié)果亦為單列值的和。
這里通過使用閉包函數(shù)托启,減少了條件判斷宅倒,foreach循環(huán)及參數(shù)的使用,較之前更為簡(jiǎn)便屯耸。推薦給大家拐迁。望能集思廣益,寫出更高效的代碼疗绣!