首頁 > 後端開發 > PHP問題 > php求二維數組某一列總和

php求二維數組某一列總和

PHPz
發布: 2023-05-07 21:18:37
原創
838 人瀏覽過

在PHP開發過程中,我們常常需要對數組中的資料進行求和操作。針對一維數組,我們可以使用array_sum函數直接求和,但是當數組變成了二維數組,我們就需要一些額外的操作來求得指定列的總和。

例如,我們現在有一個儲存銷售數據的二維數組,每個子數組代表一個商品的銷售數據,包括商品id、銷售量、單價等資訊。我們需要求得所有商品的總收入,即銷售量與單價的乘積的總和。

那麼,該如何實現這項操作呢?

首先,我們可以使用array_column函數來取得指定列的陣列。這個函數是PHP5.5 版本新增的,其語法為:array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ) ,其中,$input為要提取列的數組,$column_key為要提取的列的鍵名或數字索引,$index_key可選,為要作為傳回數組的key的列的鍵名或數字索引。

例如,在上述的銷售資料二維數組中,我們可以使用以下程式碼來取得所有商品的銷售量數組:

$sold_amount = array_column($sales_data, 'sold_amount');
登入後複製

接下來,我們可以使用array_reduce函數對$sold_amount數組進行累加操作,從而得到銷售量的總和。其語法為:array_reduce ( array $array , callable $callback [, mixed $initial = null ] ),其中,$array為要進行累加操作的數組,$callback為自訂的回呼函數,$initial為初始值。

例如,我們可以使用以下程式碼求得所有商品銷售量的總和:

$total_sold_amount = array_reduce($sold_amount, function($carry, $item){
    return $carry + $item;
});
登入後複製

接下來,我們需要對單價數組進行同樣的操作,從而得到所有商品單價的總和。最後,我們可以將兩個總和相乘,得到所有商品的總收入。

完整的程式碼如下:

$sales_data = array(
    array('id' => 1, 'sold_amount' => 50, 'unit_price' => 2.5),
    array('id' => 2, 'sold_amount' => 20, 'unit_price' => 3.2),
    array('id' => 3, 'sold_amount' => 100, 'unit_price' => 1.8),
);

$sold_amount = array_column($sales_data, 'sold_amount');
$total_sold_amount = array_reduce($sold_amount, function($carry, $item){
    return $carry + $item;
});

$unit_price = array_column($sales_data, 'unit_price');
$total_unit_price = array_reduce($unit_price, function($carry, $item){
    return $carry + $item;
});

$total_revenue = $total_sold_amount * $total_unit_price;

echo '所有商品的总收入为:' . $total_revenue;
登入後複製

以上程式碼執行後輸出:所有商品的總收入為:630。

綜上所述,當我們需要對二維數組的某一列進行求和操作時,可以使用array_column函數獲取指定列的數組,再使用array_reduce函數對數組進行累加操作,從而得到該列的總和。透過這些方法,我們可以更方便地對資料進行處理,提高開發效率。

以上是php求二維數組某一列總和的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板