第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無循環(huán)鍵的多維數(shù)組的總和

無循環(huán)鍵的多維數(shù)組的總和

慕的地10843 2019-11-02 13:24:11
我有這個: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列的總和。我已經(jīng)嘗試了幾個小時了。我以為array_sum()可以,但是不適用于多維數(shù)組。因此,我試圖弄清楚如何f_count通過unset()或剪接或其他方式隔離s ,但是每種解決方案似乎都涉及一個foreach循環(huán)。我弄亂了array_map,array_walk和其他人,但無濟于事。我還沒有找到一個可以很好地處理多維數(shù)組的函數(shù)。我正在運行PHP 5.4。有人可以告訴我如何在沒有foreach循環(huán)的情況下求和該列嗎?如果有幫助,則f_count值將永遠不會大于100,并且uid值將始終大于100。另外,如果有一種方法可以不同地運行我的查詢,使得數(shù)組不是多維的,那顯然也可以。$query = "SELECT f_count, uid FROM users WHERE gid=:gid";...$array = $stmt->fetchAll();我正在使用PDO。
查看完整描述

3 回答

?
德瑪西亞99

TA貢獻1770條經(jīng)驗 獲得超3個贊

您需要將其與之耦合以array_map()首先選擇該f_count列:


array_sum(array_map(function($item) { 

    return $item['f_count']; 

}, $arr));

當然,在內(nèi)部,這會執(zhí)行一個雙循環(huán)。只是您在代碼中看不到它。您可以array_reduce()用來擺脫一個循環(huán):


array_reduce($arr, function(&$res, $item) {

    return $res + $item['f_count'];

}, 0);

但是,如果速度是唯一的利益,那么速度foreach仍然最快:


$sum = 0;

foreach ($arr as $item) {

    $sum += $item['f_count'];

}

這要歸功于您使用的變量的“局部性”,即,沒有用于計算最終總和的函數(shù)調(diào)用。


查看完整回答
反對 回復 2019-11-02
?
繁星coding

TA貢獻1797條經(jīng)驗 獲得超4個贊

另外,如果有一種方法可以不同地運行我的查詢,使得數(shù)組不是多維的,那顯然也可以。


$query = "SELECT f_count, uid FROM users WHERE gid=:gid"; 

... 

$array = $stmt->fetchAll(); 

我正在使用PDO。


是的,還有另一種方式可以不同地運行查詢。您可以使用聚合函數(shù)直接在查詢中SUM獲取所有f_count直接和的總和。您可以將其與組合$stmt->fetchColumn()以獲取第一行(由于我們使用了聚合函數(shù),因此它將是唯一的行)的第一列的值(即總和)。


以下是如何執(zhí)行此操作的示例:


$query = "SELECT SUM(f_count) FROM users WHERE gid=:gid";

$stmt = $pdo->prepare($query);

$stmt->execute(array(':gid' => 'yoursearchvalue'));

$sum = $stmt->fetchColumn();


查看完整回答
反對 回復 2019-11-02
?
狐的傳說

TA貢獻1804條經(jīng)驗 獲得超3個贊

對于這種情況,foreach循環(huán)是最好的選擇,但如果您必須在單個頁面上多次執(zhí)行此操作,則應將foreach循環(huán)放入函數(shù)中,以使您的代碼保持干凈


function sum_index($arr, $col_name){

    $sum = 0;

    foreach ($arr as $item) {

        $sum += $item[$col_name];

    }

    return $sum;

}

編輯


經(jīng)過大量搜索后,我發(fā)現(xiàn)該array_column函數(shù)存在于php 5.5 +中,以獲取單列的所有值作為數(shù)組。


對于較低版本的用戶,如果您還希望所有值的總和,則可以使用以下函數(shù),并使用數(shù)組和調(diào)用它。


//to get all values of single column from multidimensional array, this function exist in php 5.5 or greater.

if(!function_exists("array_column"))

{

    function array_column($array,$column_name)

    {

        return array_map(function($element) use($column_name){return $element[$column_name];}, $array);

    }

}

如果要獲取單列的所有值,請按以下方式調(diào)用上述函數(shù):


$newArray = array_column($array,$column_name);

如果要對單個列的所有值求和,請使用以下代碼:


$newArraySum = array_sum(array_column($array,$column_name));


查看完整回答
反對 回復 2019-11-02
  • 3 回答
  • 0 關注
  • 416 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號