这个函数的作用是,把数组中的值循环放到回调函数里处理,结果返回一个单一的值。(applies iteratively the callback function to the elements of the array, so as to reduce the array to a single value.)

这个函数需要两个必须参数和一个可选参数。第一个参数是要操作的数组,第二个是回调函数,第三个是初始值(可选)。

举个例子,比如

function sum($carry, $item)
{
var_dump($carry);
var_dump($item);
echo '<br/>';
$carry += $item;
return $carry;
} $a = array(
'a' => 1,
'b' => 2,
'c' => 3,
'53' => 4,
); var_dump(array_reduce($a, "sum") );

这个的运行结果:

NULL     int(1)
int(1)    int(2)
int(3)    int(3)
int(6)    int(4)
int(10)

以上表示,回调函数的第一个参数,可以hold住每次循环后的回调执行结果,以供下次循环使用(第一次执行的时候,这个参数取的是array_reduce()的第三个参数:初始值,没有就是null)。第二个参数就是每次循环的数组的值。

最后的结果就返回了single value,就是10~

再来看一个w3c的例子。

function joinstring($v1,$v2)
{
return $v1 . "-" . $v2;
} $a=array("Dog","Cat","Horse"); print_r(array_reduce($a,"joinstring"));

这个的返回结果是:-Dog-Cat-Horse

注意字符串前边有个中划线。如果你认真看了第一个例子的说明,这个就不难理解了。

因为array_reduce()没有初始值传入,所以第一次循环时,$v1是null,所以第一次hold住的值就是"-Dog";这下明白了吧哈哈~

array_reduce()使用的更多相关文章

  1. PHP根据array_map、array_reduce和array_column获取二维数组中某个key的集合

    http://camnpr.com/php-python/1715.html 巧用array_map()和array_reduce()替代foreach循环

  2. PHP数组处理函数的使用array_reduce(二)

    关于PHP数组操作函数更为细致的用法大家还可以参考PHP在线参考手册:http://php.net/manual/zh/index.php array_reduce — 用回调函数迭代地将数组简化为单 ...

  3. 巧用array_map()和array_reduce()替代foreach循环

    1.array_reduce( $arr , callable $callback ) 使用回调函数迭代地将数组简化为单一的值. 其中$arr 为输入数组,$callback($result , $v ...

  4. array_reduce方法用回调函数迭代地将对数组的值进行操作

    在处理php数组的时候,有一种需求特别的频繁,如下二维数组: $arr = array( 1=>array( 'id' => 5, 'name' => '张三' ), 2=>a ...

  5. php array_walk 和 array_reduce函数

    1.array_walk:将数组中的元素(键+值)依次取出传给处理的函数,函数处理完就完了,没有返回值. $arr1=array( 'name'=>'zhangsan', 'age'=>3 ...

  6. PHP闭包Closure与array_reduce结合的一个范例

    最近在研究laravel5.5的源代码,发现了其中的一段代码觉得挺有意思! 文件:vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.p ...

  7. 014——数组(十四)array_reduce array_slice array_splice array_sum

    <?php /** */ //array_reduce()递归的用回调函数递归的对数组元素进行处理,返回处理后的值 /*$arr=array(1,2,3,4,5); function func( ...

  8. PHP array_reduce()函数的应用解析

    实例 向用户自定义函数发送数组中的值,并返回一个字符串: <?php function myfunction($v1,$v2) { return $v1 . "-" . $v ...

  9. PHP中array_reduce()使用

    array_reduce — 用回调函数迭代地将数组简化为单一的值 给定一个数组: $ar = array(1,2,3,4,5); 如果要求得这个数组中各个元素之和. 方法一. 很自然的用foreac ...

随机推荐

  1. PDO中的预处理

    PDO中的基本的原理和步骤和MySQL中的预处理都是一样的,只不过就是把MySQL中的预处理所有命令行的语法封装成了PDO对象的几个公开的方法而已! 1.发送预处理语句 此时,我们需要调用pdo对象的 ...

  2. 【代码笔记】iOS-NSJSONSerializationDemo

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...

  3. springboot项目中js、css静态文件路径访问

    springboot静态文件访问的问题,相信大家也有遇到这个问题,如下图项目结构. 项目结构如上所示,静态页面引入js.css如下所示. 大家肯定都是这样写的,但是运行的话就是出不来效果,图片也不显示 ...

  4. SuperSlide轮播插件滚动高度或宽度不对的问题解决

    声明:本文由w3h5原创,转载请注明出处:<SuperSlide轮播插件滚动高度或宽度不对的问题解决> SuperSlide 是一款比较实用的轮播插件,网站上常用的“焦点图/幻灯片”“Ta ...

  5. nginx深入剖析

    1.nginx功能模块说明 nginx之所以很强大,是因为具有很多的强大的模块 nginx核心功能模块:nginx的核心功能模块负责nginx的全局应用,主要对应的是主配置文件中的Main区块和Eve ...

  6. Android--监听View的两个指头是放大和缩小

    private double nLenStart = 0;//监听 WebView所用手势 @Override public boolean onTouch(View v, MotionEvent e ...

  7. LeetCode题解之Reorder List

    1.题目描述 2.题目分析 首先将链表分为两段,然后将后面的一段反转,再合并两个链表. 3.代码 void reorderList(ListNode* head) { if (head == null ...

  8. Jmeter之HTTP Cookie 管理器

    Jmeter所支持的Cookie标准有很多,同时jmeter也提供两组程序实现这些cookie标准,分别是httpclient3与httpclient4.http cookie 管理器中的Implem ...

  9. Python实例---模拟微信网页登录(day2)

    第三步: 实现长轮询访问服务器---day2代码 settings.py """ Django settings for weixin project. Generate ...

  10. 配置nginx支持TP框架

    TP框架配置中默认URL_MODEL=1,而Nginx默认是不支持PATHINFO的.如果我们只想跑起来tp框架,很简单,只需到更改TP配置,设置URL_MODEL=3(兼容模式).但是如果要让Ngi ...