在PHP的数组操作中,可能在处理数字方法会比较多一点,加法一向是被使用的,所以。。array_sum的使用就相对比较多了。(array_sum也只是仅仅支持一维数组,不过,无论是否有下标都可以直接处理),那么乘法、除法、减法怎么办呢?array_walker?杀鸡不用牛刀的。直接使用array_reduce就行了。
翻开手册,可以明显的看到array_reduce就是将回调函数迭代的作用在数组的每一个单元里,从而将数组简化成单一值。如果指定了第三个参数,那么,
1、如果要处理的数组为空,则返回第三个参数的值(第三个参数是INT型)
2、如果要处理的数组不为空,那么第三个参数则默认为数组的第一个值,相当用使用了array_unshift为原始数组头部插入一个值。
简单的例子如下:
PHP代码
- <?php
- function r_sum ( $a , $b){
- $a += $b;
- return $a;
- }
- function r_mul ( $a , $b ){
- $a *= $b;
- return $a;
- }
- $a = array(1,2,3,4,5);
- $b = array();
- $c = array_reduce( $a , 'r_sum'); //return 15
- $d = array_reduce( $a , 'r_mul' , 10 ) ; //return 1200 [10*1*2*3*4*5]
- $e = array_reduce( $b , 'r_sum' , 1 ); //return 1 因为$b是空数组
- ?>
现在,就不用再担心怎么处理加减乘除等四则运算了,不用再埋怨为什么只提供一个array_sum函数了吧。