php怎麼對一個陣列的某一列求和

PHPz
發布: 2023-04-26 09:40:55
原創
619 人瀏覽過

在PHP中,對一個陣列的某一列求和是一個常見的需求。如果該數組是一維數組,使用array_sum()函數即可實現。例如:

$array = array(1, 2, 3, 4, 5);
$sum = array_sum($array); // $sum = 15
登入後複製

但如果該數組是二維數組,則需要先提取該列的所有值,然後再將它們求和。可以使用array_column()函數來提取某一列的值,然後再使用array_sum()函數對這些值進行求和。例如:

$records = array(
    array('name' => 'John', 'score' => 85),
    array('name' => 'Mary', 'score' => 92),
    array('name' => 'Peter', 'score' => 78),
    array('name' => 'Lisa', 'score' => 89)
);
$scores = array_column($records, 'score');
$sum = array_sum($scores); // $sum = 344
登入後複製

在上面的例子中,$records是一個二維數組,包含了每個人的姓名和分數。使用array_column()函數提取所有的分數,然後使用array_sum()函數對它們進行求和,得到了總分344。

需要注意的是,如果該列的值中包含了非數字類型(例如字串),則需要先透過型別轉換將它們轉換成數字。否則,求和的結果可能會不準確。例如:

$records = array(
    array('name' => 'John', 'score' => '85'),
    array('name' => 'Mary', 'score' => '92'),
    array('name' => 'Peter', 'score' => '78'),
    array('name' => 'Lisa', 'score' => '89')
);
$scores = array_column($records, 'score');
$sum = array_sum($scores); // $sum = 0
登入後複製

在上面的例子中,$records中的分數都是字串型別。如果直接對它們進行求和,會得到一個不準確的結果0。可以透過在array_column()函數中指定第三個參數將它們轉換成數字類型。例如:

$records = array(
    array('name' => 'John', 'score' => '85'),
    array('name' => 'Mary', 'score' => '92'),
    array('name' => 'Peter', 'score' => '78'),
    array('name' => 'Lisa', 'score' => '89')
);
$scores = array_column($records, 'score', 'name');
$scores = array_map('intval', $scores);
$sum = array_sum($scores); // $sum = 344
登入後複製

在上面的範例中,使用array_column()函數提取出了每個人的分數,並將它們儲存在一個以姓名為鍵、分數為值的新陣列中。然後使用array_map()函數對這些值進行類型轉換,最後再使用array_sum()函數對它們進行求和,得到了正確的結果344。

綜上所述,對一個陣列的某一列求和在PHP中並不困難,只需要注意資料型別的問題即可。

以上是php怎麼對一個陣列的某一列求和的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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