PHP用foreach来表达array_walk/array_filter/array_map/array_reduce
为什么80%的码农都做不了架构师?>>>
PHP装逼玩函数式(回调匿名函数):
array_walk/array_filter/array_map/array_reduce:
遍历数组,回调函数.遍历一次,回调一次.
这些逻辑其实都可以用foreach来表达,而且更容易理解.
array_walk相当于foreach:
$arr = ['Client'=>'jQuery','Server'=>'PHP'];
array_walk($arr, function($v, $k) {echo "键:$k 值:$v\n";
});
比如去除数组$arr元素的前后空白:
array_walk($arr, function(&$v) { $v = trim($v); });
foreach($arr as &$v) { $v = trim($v); }
array_filter: 用回调函数过滤数组中的单元,返回过滤后的数组
var_export(array_filter([1, 2, 3], function($v) {return $v > 1;})
);
和
foreach([1, 2, 3] as $k => $v) {if($v > 1) {$tmp[$k] = $v;}
}
var_export($tmp);
都输出:
array (1 => 2,2 => 3,
)
PHP数组映射化简(MapReduce):
array_map/array_reduce
array_map: 将回调函数作用到给定数组的单元上
var_export(array_map(function ($v) {return $v * $v;}, [1, 2, 3])
);
和
foreach([1, 2, 3] as $v) {$tmp[] = $v * $v;
}
var_export($tmp);
都输出:
array (0 => 1,1 => 4,2 => 9,
)
array_reduce: 用回调函数迭代地将数组简化(reduce)为单一的值
//输出16,即10+1+2+3,其中10作为初始值.
echo array_reduce([1, 2, 3], function($result, $item) {$result = $result + $item;return $result;
}, 10);
用foreach表达:
$result = 10;
foreach([1, 2, 3] as $v) {$result = $result + $v;
}
echo $result;
转载于:https://my.oschina.net/eechen/blog/751710
PHP用foreach来表达array_walk/array_filter/array_map/array_reduce相关推荐
- php array_filter array_map,回调函数来处理数组:array_,map(),array_filter(),array_walk()
使用回调来处理数组 1,array_filter($arr,function($value){})将每个值传入回调,最终结果仅包括返回true 的元素,返回数组 2. array_walk($arr, ...
- array_walk与array_map的区别
1.array_walk是用于用户自定义的函数,所以想用array_walk($aIds, "trim");去掉数据元素中的空格是达不到目的的 只能用array_walk($aId ...
- PHP 从菜鸟到大咖的踩坑之路
https://cloud.tencent.com/developer/article/1464655 电商Sku设计思维 https://xlswriter-docs.viest.me/zh-cn/ ...
- php 编码安全,PHP编码安全之二: 代码执行漏洞
本文内容参考自<PHP安全之道>. PHP提供代码执行(code execution)类函数是为了方便开发人员处理各类数据,但是不合理的使用会造成潜在的安全风险.其中的eval, asse ...
- 渗透学习之PHP--webshell
1.1 常见变形 GLOBALS eval($GLOBALS['_POST']['op']); $_FILE eval($_FILE['name']); 拆分 eval(${"_PO&quo ...
- php array walk 效率,php代码优化系列(二) -- array_walk 和 foreach, for 的效率的比较...
实验是我学习计算机科学的一个重要方法,计算机科学不是简单的智力游戏,它本质上来说不是一门科学,而是一个改造世界的工具.数学方法和实验方法是计算机研究的基本方法,也是我们学习的基本方法,数学锻炼我们的思 ...
- php代码优化 -- array_walk 和 foreach, for 的效率的比较
<?php /*** array_walk 和 foreach, for 的效率的比较.* 我们要测试的是foreach, for, 和 array_walk的效率的问题. *///产生一个10 ...
- Java forEach中 Lambda Expr中的 final变量要求
https://my.oschina.net/wadelau/blog/1859419 Java forEach中 Lambda Expr中的 final变量要求 Java8闭包 闭包是一个函数在创建 ...
- php——webshell变形总结
技术点 具体手法 样本 巧用$GPC 利用$GLOBALS @eval($GLOBALS['_POST']['cmd']); 利用$_FILE @eval($_FILE['name']); 关键字替换 ...
最新文章
- 模块的使用,包,及程序开发规范
- (转)安装黑苹果 MAC OS X Lion 10.7.2过程 (未验证)
- arm9 6410 tslib触屏小程序
- JavaScript 日期格式化 简单有用
- 三步拆解一个数据分析体系
- (转)编码剖析Spring装配基本属性的原理
- 【CF】304 E. Soldier and Traveling
- JAVA编程思想——读书笔记 多态
- 定位日站大法之-社会工程学
- HTML不刷新,改数据
- 中级通信工程师 | 关于考试,你想了解的都在这里!
- kali 邮箱攻击_利用Kali linux制作钓鱼网站
- kali破解压缩包密码
- 产品 观察体会微信界面心得(一)
- 华为热设计工程师待遇_【华为热设计工程师面试】华为热设计工程师的笔试经历-看准网...
- 头部 CT 图像三维重建
- Fisher information(费雪信息)和费雪信息矩阵
- 从零开始学习SFR-- 2.0
- 基于Arduino控制的网格循迹小车
- 卧槽!红警代码竟然开源了!!!
热门文章
- ERP系统管理员的工具箱 推荐几款优秀的数据比较同步工具 Data Compare and Sync tool...
- 新手XP下硬盘安装ubuntu10.10全程解析
- 上周新闻回顾:Vista麻烦不断 Office波澜再起(2.26-3.4)
- Vue+Element前端导入导出Excel
- WEB API的安全问题
- github开源项目分享
- web从零单排,做一个简单的幻灯片
- StringBuffer 和StringBuilder的区别
- [IoC容器Unity]第一回:Unity预览
- 十种工具审核网络安全