php如何求同列元素之和_求得这个数组中各个元素之和
給定一個數(shù)組:
$ar = array(1,2,3,4,5);
如果要求得這個數(shù)組中各個元素之和。
方法一、
很自然的用foreach實現(xiàn)
```
$sum = 0;
foreach ($ar as $v) {
$sum+=$v;
}
echo $sum;
```
方法二、
我們可以用array_reduce實現(xiàn)。它是專門用來迭代數(shù)組的。該函數(shù)最多接收三個參數(shù)。
第一個參數(shù)接收數(shù)組
第二個參數(shù)函數(shù)名,也可以是匿名函數(shù),函數(shù)有兩個參數(shù),分別代表`$result`和`$item`
第三個參數(shù)(可選),該參數(shù)將被當(dāng)成是數(shù)組中的第一個值來處理,或者如果數(shù)組為空的話就作為最終返回值。
```
function leijia($a,$b){
$a+=$b;
return $a;
}
$result = array_reduce($ar ,leijia);
echo $result;
```
繼續(xù)優(yōu)化,在`PHP5.3`以上中可以用匿名函數(shù)了。使代碼更精簡。
```
$result = array_reduce($ar ,function($a,$b){
$a+=$b;
return $a;
});
```
array_reduce的強大不僅如此。看下面的例子。將數(shù)組$arr的首個元素彈出,作為初始值,避免`min($result['min'], $item['min'])`中`$result`為空。
否則最終結(jié)果min是空的。
```
$arr = array(
array('min' => 1.5456, 'max' => 2.28548, 'volume' => 23.152),
array('min' => 1.5457, 'max' => 2.28549, 'volume' => 23.152),
array('min' => 1.5458, 'max' => 2.28550, 'volume' => 23.152),
array('min' => 1.5459, 'max' => 2.28551, 'volume' => 23.152),
array('min' => 1.5460, 'max' => 2.28552, 'volume' => 23.152),
);
$initial = array_shift($arr);
$t = array_reduce($arr, function($result, $item) {
$result['min'] = min($result['min'], $item['min']);
$result['max'] = max($result['max'], $item['max']);
$result['volume'] += $item['volume'];
return $result;
}, $initial);
```
總之,這種寫法比foreach更優(yōu)雅,更少的定義變量。推薦使用。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的php如何求同列元素之和_求得这个数组中各个元素之和的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ipad网页快捷键(ipad网页右键)
- 下一篇: java异常了还会往下走吗_异常一个问题