給定一個數組:
$ar = array(1,2,3,4,5);
如果要求得這個數組中各個元素之和。
方法一、
很自然的用foreach實現
```
$sum = 0;
foreach ($ar as $v) {
$sum+=$v;
}
echo $sum;
```
方法二、
我們可以用array_reduce實現。它是專門用來迭代數組的。該函數最多接收三個參數。
第一個參數接收數組
第二個參數函數名,也可以是匿名函數,函數有兩個參數,分別代表`$result`和`$item`
第三個參數(可選),該參數將被當成是數組中的第一個值來處理,或者如果數組為空的話就作為最終返回值。
```
function leijia($a,$b){
$a+=$b;
return $a;
}
$result = array_reduce($ar ,leijia);
echo $result;
```
繼續優化,在`PHP5.3`以上中可以用匿名函數了。使代碼更精簡。
```
$result = array_reduce($ar ,function($a,$b){
$a+=$b;
return $a;
});
```
array_reduce的強大不僅如此。看下面的例子。將數組$arr的首個元素彈出,作為初始值,避免`min($result['min'], $item['min'])`中`$result`為空。
否則最終結果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更優雅,更少的定義變量。推薦使用。
- 一維數組操作方法
- 求得這個數組中各個元素之和
- 取出兩個數組中相同的內容
- 將數組元素組合為字符串implode
- 將字符串轉化為數組explode
- 逗號分割的字符串去重
- 一維數組增加某個值
- PHP從數組中找到指定元素的位置
- 二維或多維數組操作方法
- 根據某一個鍵值合并生成一個新的二維數組
- 二維數組變一維數組
- 二維數組取一個值變一維數組
- php二維數組合并及去重復的方法
- php數組根據某鍵值,把相同鍵值的合并最終生成一個新的二維數組
- 二維數組增加一個值
- 生成無限級樹算法
- sql2md SQL轉化為markdown語法
- PHP修改多維數組中的某個值
- 二維數組
- 省市區聯動的查詢
- PHP求某二維數組,某一列元素的最大最小值
- php 求二維數組的差集
- 按某個鍵值排序
- 基本知識
- 鍵名作為鍵值
- PHP中foreach的用法和實例
- PHP foreach 循環案例
- php5.3以后的foreach的&符號不建議使用
- PHP中判斷變量為空的幾種方法小結
- 判斷PHP數組是否為空的代碼
- php刪除數組中指定值的元素的幾種方法
- PHP刪除數組中的指定元素
- php數組函數序列之array_keys() - 獲取數組鍵名
- php 中更簡潔的三元運算符 ?:
- 函數
- 字符串函數
- 數組函數
- 實例
- 將 $arr 中age大于第一個大于30的人增加一項一條信息
- 強大的數組函數