这个函数的作用是,把数组中的值循环放到回调函数里处理,结果返回一个单一的值。(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. CSS文字超出指定长度,用省略号

    overflow:hidden; text-overflow:ellipsis; white-space:nowrap; display: block;

  2. CentOS6.5搭建ldap及pdc的过程

    linux   centos6.5,,配置的是本地yum,采用光盘自带的rpm包进行安装 安装openldap server 以及client yum install openldap-server ...

  3. [原创.数据可视化系列之八]使用等d3进行灰度图转伪彩色

    对灰度图进行彩色化是数据可视化中常见的需求,使用d3在客户端比较容易实现,本文使用d3生成图片,并显示: 代码如下: 代码中首先下载数据文件,然后设定d3的色带信息,生成一个空白的canvas元素,并 ...

  4. 8.2、常用模块介绍2:xml,configparser,hashlib

    xml: 介绍:包含关于可扩展标记语言xml的函数 使用: python有三种方法解析XML--SAX,DOM,以及ElementTree,由于xml技术落后,所以这里不对sax,dom介绍: xml ...

  5. Mac配置SDK+JDK环境

    1.打开默认终端设备,编辑.bash_profile文件,命令:vi .bash_profile 2.执行,打开文件,编辑,配置环境命令如下: ①JDK环境:export JAVA_HOME=/lib ...

  6. qt多线程信号槽传输方式

    //简单介绍一下QT信号与槽的连接方式:    //Qt::AutoConnection表示系统自动选择相应的连接方式,如果信号与槽在同一线程,就采用Qt::DirectConnection, //如 ...

  7. 大于2t的磁盘分区,并格式化ext4挂载

    1:MBR分区表:(MBR含义:主引导记录) 所支持的最大卷:2T (T; terabytes,1TB=1024GB) 对分区的设限:最多4个主分区或3个主分区加一个扩展分区. 2:GPT分区表:(G ...

  8. 【JAVA】使用 jedis操作redis——连接、存储数据、切库等

    本篇运用Java调用jedis包(jedis在线文档API ),做简单操作实例. 安装jedis 1. 2.9.0 jar 版本下载: jedis-2.9.0.jar 2. 新建项目,添加该驱动包 连 ...

  9. 【JAVA】什么是冒泡排序?——面试加分题

    冒泡排序是一种计算机科学领域的较简单的排序算法,有心人将代码不断优化改良,本人特摘抄部分代码进行学习. 文章来自开源中国,转载自:程序员小灰.原文:漫画:什么是冒泡排序? 冒泡排序第一版 public ...

  10. 开发中解决Access-Control-Allow-Origin跨域问题的Chrome神器插件,安装及使用

    背景: 笔者在用cordova开发安卓程序的时候在安卓设备上不存在跨域问题,但是在浏览器端模拟调试的时候却出现了Access-Control-Allow-Origin跨域问题,报错如下 No 'Acc ...