array_reduce()使用
这个函数的作用是,把数组中的值循环放到回调函数里处理,结果返回一个单一的值。(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()使用的更多相关文章
- PHP根据array_map、array_reduce和array_column获取二维数组中某个key的集合
http://camnpr.com/php-python/1715.html 巧用array_map()和array_reduce()替代foreach循环
- PHP数组处理函数的使用array_reduce(二)
关于PHP数组操作函数更为细致的用法大家还可以参考PHP在线参考手册:http://php.net/manual/zh/index.php array_reduce — 用回调函数迭代地将数组简化为单 ...
- 巧用array_map()和array_reduce()替代foreach循环
1.array_reduce( $arr , callable $callback ) 使用回调函数迭代地将数组简化为单一的值. 其中$arr 为输入数组,$callback($result , $v ...
- array_reduce方法用回调函数迭代地将对数组的值进行操作
在处理php数组的时候,有一种需求特别的频繁,如下二维数组: $arr = array( 1=>array( 'id' => 5, 'name' => '张三' ), 2=>a ...
- php array_walk 和 array_reduce函数
1.array_walk:将数组中的元素(键+值)依次取出传给处理的函数,函数处理完就完了,没有返回值. $arr1=array( 'name'=>'zhangsan', 'age'=>3 ...
- PHP闭包Closure与array_reduce结合的一个范例
最近在研究laravel5.5的源代码,发现了其中的一段代码觉得挺有意思! 文件:vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.p ...
- 014——数组(十四)array_reduce array_slice array_splice array_sum
<?php /** */ //array_reduce()递归的用回调函数递归的对数组元素进行处理,返回处理后的值 /*$arr=array(1,2,3,4,5); function func( ...
- PHP array_reduce()函数的应用解析
实例 向用户自定义函数发送数组中的值,并返回一个字符串: <?php function myfunction($v1,$v2) { return $v1 . "-" . $v ...
- PHP中array_reduce()使用
array_reduce — 用回调函数迭代地将数组简化为单一的值 给定一个数组: $ar = array(1,2,3,4,5); 如果要求得这个数组中各个元素之和. 方法一. 很自然的用foreac ...
随机推荐
- 使用excel开发平台活字格搭建物流管理系统
物流管理系统是指包含完整的物流公司信息.物流寄件信息.物流运输信息以及物流寄件单位等管理系统.功能完善的物流管理系统,能帮助物流企业更好的进行物流管理. 下面我们借助活字格,来设计一个简单的物流管理系 ...
- Nginx的location剖析
1.location的作用: location指令的作用是根据用户的请求的URL来执行不同的应用 2.location的语法: location [ = | ~ | ~* | ^~ ] uri { . ...
- Android项目实战(三十):Fresco加载gif图片并播放
前言: 项目中图文混合使用的太多太多了,但是绝大部分都是静态图片. 然而项目开发中有这么一个需求:显示一个出一个简短的动画(一般都不超过3秒)演示 比如说:一个功能提供很多步骤来教用户做广播体操,那么 ...
- Vue -- vue-cli webpack打包开启Gzip 报错
前两天项目上线,用vue-cli npm run build命令打包,打包完成后我擦吓了一跳,15M.本来暂时不打算优化的,但是每次看着部署包这么大,想想还是先优化一下,让包好看点,免得以后出现心理阴 ...
- LeetCode题解之 Sum of Left Leaves
1.题目描述 2.问题分析 对于每个节点,如果其左子节点是叶子,则加上它的值,如果不是,递归,再对右子节点递归即可. 3.代码 int sumOfLeftLeaves(TreeNode* root) ...
- LeetCode题解之 Reverse Only Letters
1.题目描述 2.题目描述 利用栈实现逆序. 3.代码 string reverseOnlyLetters(string S) { || S.size() == ) return S; stack&l ...
- DevOps之域名-搭建工具
唠叨话 关于德语噢屁事的知识点,仅提供精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. 域名系统DNS(Domain Name System) 关于系统,知识与技能的层次(知道.理解.运用) ...
- 为notifyIcon.icon属性赋图片
System.Drawing.Bitmap bp; bp = new Bitmap(Application.StartupPath + @"\image\" + MeiYeShuo ...
- 向磁盘写入数据提示:No spac left on device通过df -h查看磁盘空间,发现没满,解决方法
初步判断应该有两种情况:一种是block满了,另一种情况就是inode耗尽了. 首先df -i 查看一下是否耗尽inode/block数量. 虚拟一块磁盘并格式化: dd if=/dev/zero o ...
- python 多进程和子进程1
多进程的缓冲区 #多进程 process.py from multiprocessing import Process,current_process import time def func1(): ...