在PHP中,對一個陣列的某一列求和是一個常見的需求。如果該數組是一維數組,使用array_sum()函數即可實現。例如:
1 2 | $array = array (1, 2, 3, 4, 5);
$sum = array_sum ( $array );
|
登入後複製
但如果該數組是二維數組,則需要先提取該列的所有值,然後再將它們求和。可以使用array_column()函數來提取某一列的值,然後再使用array_sum()函數對這些值進行求和。例如:
1 2 3 4 5 6 7 8 | $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 );
|
登入後複製
在上面的例子中,$records是一個二維數組,包含了每個人的姓名和分數。使用array_column()函數提取所有的分數,然後使用array_sum()函數對它們進行求和,得到了總分344。
需要注意的是,如果該列的值中包含了非數字類型(例如字串),則需要先透過型別轉換將它們轉換成數字。否則,求和的結果可能會不準確。例如:
1 2 3 4 5 6 7 8 | $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 );
|
登入後複製
在上面的例子中,$records中的分數都是字串型別。如果直接對它們進行求和,會得到一個不準確的結果0。可以透過在array_column()函數中指定第三個參數將它們轉換成數字類型。例如:
1 2 3 4 5 6 7 8 9 | $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 );
|
登入後複製
在上面的範例中,使用array_column()函數提取出了每個人的分數,並將它們儲存在一個以姓名為鍵、分數為值的新陣列中。然後使用array_map()函數對這些值進行類型轉換,最後再使用array_sum()函數對它們進行求和,得到了正確的結果344。
綜上所述,對一個陣列的某一列求和在PHP中並不困難,只需要注意資料型別的問題即可。
以上是php怎麼對一個陣列的某一列求和的詳細內容。更多資訊請關注PHP中文網其他相關文章!