为什么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相关推荐

  1. php array_filter array_map,回调函数来处理数组:array_,map(),array_filter(),array_walk()

    使用回调来处理数组 1,array_filter($arr,function($value){})将每个值传入回调,最终结果仅包括返回true 的元素,返回数组 2. array_walk($arr, ...

  2. array_walk与array_map的区别

    1.array_walk是用于用户自定义的函数,所以想用array_walk($aIds, "trim");去掉数据元素中的空格是达不到目的的 只能用array_walk($aId ...

  3. PHP 从菜鸟到大咖的踩坑之路

    https://cloud.tencent.com/developer/article/1464655 电商Sku设计思维 https://xlswriter-docs.viest.me/zh-cn/ ...

  4. php 编码安全,PHP编码安全之二: 代码执行漏洞

    本文内容参考自<PHP安全之道>. PHP提供代码执行(code execution)类函数是为了方便开发人员处理各类数据,但是不合理的使用会造成潜在的安全风险.其中的eval, asse ...

  5. 渗透学习之PHP--webshell

    1.1 常见变形 GLOBALS eval($GLOBALS['_POST']['op']); $_FILE eval($_FILE['name']); 拆分 eval(${"_PO&quo ...

  6. php array walk 效率,php代码优化系列(二) -- array_walk 和 foreach, for 的效率的比较...

    实验是我学习计算机科学的一个重要方法,计算机科学不是简单的智力游戏,它本质上来说不是一门科学,而是一个改造世界的工具.数学方法和实验方法是计算机研究的基本方法,也是我们学习的基本方法,数学锻炼我们的思 ...

  7. php代码优化 -- array_walk 和 foreach, for 的效率的比较

    <?php /*** array_walk 和 foreach, for 的效率的比较.* 我们要测试的是foreach, for, 和 array_walk的效率的问题. *///产生一个10 ...

  8. Java forEach中 Lambda Expr中的 final变量要求

    https://my.oschina.net/wadelau/blog/1859419 Java forEach中 Lambda Expr中的 final变量要求 Java8闭包 闭包是一个函数在创建 ...

  9. php——webshell变形总结

    技术点 具体手法 样本 巧用$GPC 利用$GLOBALS @eval($GLOBALS['_POST']['cmd']); 利用$_FILE @eval($_FILE['name']); 关键字替换 ...

最新文章

  1. 模块的使用,包,及程序开发规范
  2. (转)安装黑苹果 MAC OS X Lion 10.7.2过程 (未验证)
  3. arm9 6410   tslib触屏小程序
  4. JavaScript 日期格式化 简单有用
  5. 三步拆解一个数据分析体系
  6. (转)编码剖析Spring装配基本属性的原理
  7. 【CF】304 E. Soldier and Traveling
  8. JAVA编程思想——读书笔记 多态
  9. 定位日站大法之-社会工程学
  10. HTML不刷新,改数据
  11. 中级通信工程师 | 关于考试,你想了解的都在这里!
  12. kali 邮箱攻击_利用Kali linux制作钓鱼网站
  13. kali破解压缩包密码
  14. 产品 观察体会微信界面心得(一)
  15. 华为热设计工程师待遇_【华为热设计工程师面试】华为热设计工程师的笔试经历-看准网...
  16. 头部 CT 图像三维重建
  17. Fisher information(费雪信息)和费雪信息矩阵
  18. 从零开始学习SFR-- 2.0
  19. 基于Arduino控制的网格循迹小车
  20. 卧槽!红警代码竟然开源了!!!

热门文章

  1. ERP系统管理员的工具箱 推荐几款优秀的数据比较同步工具 Data Compare and Sync tool...
  2. 新手XP下硬盘安装ubuntu10.10全程解析
  3. 上周新闻回顾:Vista麻烦不断 Office波澜再起(2.26-3.4)
  4. Vue+Element前端导入导出Excel
  5. WEB API的安全问题
  6. github开源项目分享
  7. web从零单排,做一个简单的幻灯片
  8. StringBuffer 和StringBuilder的区别
  9. [IoC容器Unity]第一回:Unity预览
  10. 十种工具审核网络安全