在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中文網其他相關文章!