본문 바로가기
MySql

MySQL 루프없이 키로 다차원 배열의 값 합계

by 베이스 공부 2021. 1. 3.
반응형

나는 이것을 가지고있다:

Array (
    [0] => Array ( [f_count] => 1 [uid] => 105 ) 
    [1] => Array ( [f_count] => 0 [uid] => 106 ) 
    [2] => Array ( [f_count] => 2 [uid] => 107 ) 
    [3] => Array ( [f_count] => 0 [uid] => 108 ) 
    [4] => Array ( [f_count] => 1 [uid] => 109 ) 
    [5] => Array ( [f_count] => 0 [uid] => 110 ) 
    [6] => Array ( [f_count] => 3 [uid] => 111 )
)

필요한 것은 7 "이며 f_count 열의 합계입니다.


PHP 5.4를 실행하고 있습니다.

누군가가 foreach 루프없이 해당 열을 합산하는 방법을 보여줄 수 있습니까?

도움이된다면 f_count 값은 100 보다 크지 않으며 uid 값은 항상 100 .

또는 배열이 다차원이 아니도록 쿼리를 다르게 실행하는 방법이 있다면 분명히 작동합니다.

$query = "SELECT f_count, uid FROM users WHERE gid=:gid";
...
$array = $stmt->fetchAll();

PDO를 사용하고 있습니다.

 

해결 방법

 


array_sum(array_map(function($item) { 
    return $item['f_count']; 
}, $arr));


array_reduce($arr, function(&$res, $item) {
    return $res + $item['f_count'];
}, 0);

그러나 속도가 유일한 관심사라면 foreach 가 가장 빠릅니다.

$sum = 0;
foreach ($arr as $item) {
    $sum += $item['f_count'];
}

이는 사용중인 변수의 "지역성"덕분입니다. 즉, 최종 합계를 계산하는 데 사용되는 함수 호출이 없습니다.

 

참조 페이지 https://stackoverflow.com/questions/16138395

 

 

반응형

댓글