Functions should do one thing一个函数应该只做一件事
if you take nothing else away from this guide other than this,
you'll be ahead of many developers.
如果你不离开这个指南,除此之外,你将超越大多数的开发者。


1、array_walk 使用用户自定义函数对数组中的每个元素做回调处理
array_walk(array &$array,callable $callback[,mixed $userdata = NULL])
将用户自定义函数funcname应用到array数组中的每个单元。
array_walk()不会受到array内部数组指针的影响。
array_walk()会遍历整个数组而不管指针的位置。
它的参数
1》array 输入的数组。
2》callback 典型情况下callback接受两个参数。
(array参数的值作为第一个,键名作为第二个)
如果callback需要直接作用于数组中的值,则给callback的
第一个参数指定为引用。这样任何对这些单元的改变也将会
改变原始数组本身。
参数数量超过预期,传入内置函数(例如strtolower()),将抛出警告,
所以不适合当做funcname.
只有array的值才可以被改变,用户不应在回调函数中改变该数组本身
的结构。例如增加/删除单元,unset单元等等。如果array_walk()作用
的数组改变了,则此函数的行为未经定义,且不可预期。
3》userdata
如果提供了可选参数userdata,将被作为第三个参数传递给callback funcname
它的返回值
成功返回true,失败返回false.





2、array_filter
array_filter用回调函数过滤数组中的单元
array array_filter(array $array[,callable $callback[,int $flag=0]])
依次将array数组中的每个值传递到callback函数。
如果callback函数返回true,则array数组的当前值会被包含在返回
的结果数组中。数组的键名保留不变。
它的参数
1》array
要循环的数组
2》callback
使用的回调函数
如果没有提供callback函数,将删除array中所有等值为
false的条目。
3》flag
决定callback接收的参数形式
ARRAY_FILTER_USE_KEY-callback接受键名作为的唯一参数
ARRAY_FILTER_USE_BOTH-callback同时接受键名和键值
它的返回值
返回过滤后的数组
5.6版本添加可选的参数flag,以及常量ARRAY_FILTER_USE_KEY
和ARRAY_FILTER_USE_BOTH


不使用callback的array_filter(),自动过滤值为false,null,''的键值对


带flag标记的array_filter()


Caution警告: 用户不应在回调函数中修改数组本身。
例如增加/删除单元或者对array_filter()正在作用的
数组进行unset。如果数组改变了,此函数的行为将不可预测
Functions should do one thing一个函数应该只做一件事的更多相关文章
- 编写高质量代码改善C#程序的157个建议——建议144:一个方法只做一件事
建议144:一个方法只做一件事 “单一职责原则”(SRP)要求每一个类型只负责一件事情.我们将此概念扩展到方法上,就变成了:一个方法只做一件事. 回顾上一建议的代码,LocalInit和RemoteI ...
- 做一个 App 前需要考虑的几件事
做一个 App 前需要考虑的几件事 来源:limboy的博客 随着工具链的完善,语言的升级以及各种优质教程的涌现,做一个 App 的成本也越来越低了.尽管如此,有些事情最好前期就做起来,避免当 ...
- 让一个端口同时做两件事:http/https和ssh
相信很多人都在YY:能不能让80端口分析连接协议,如果是http协议就让服务器交给http服务程序(如Apache.Nginx等)处理,如果是ssh协议就交给ssh服务程序(如OpenSSH Serv ...
- 做一个App前需要考虑的几件事
本文转载于文章原文链接,版本归原作者所有! 随着工具链的完善,语言的升级以及各种优质教程的涌现,做一个 App 的成本也越来越低了.尽管如此,有些事情最好前期就做起来,避免当 App 有了一定规模后, ...
- [转载]做一个 App 前需要考虑的几件事
本文转自http://limboy.me/tech/2016/07/06/starting-an-app.html ========================================= ...
- netty源码理解(一):new一个NioEventLoopGroup的时候做了哪些事
好了,回到构造方法的调用中
- 我在开发第一个Swift App过程中学到的四件事
本文转载至 http://www.itjhwd.com/wzkfyigeswiftsjs/ 译者注:本文作者Greg Heo,这是他为讲授iOS 8 App Extensions视频教程而实际使用Sw ...
- SQL Fundamentals: Using Single-Row Functions to Customize Output使用单行函数自定义输出
SQL Fundamentals || Oracle SQL语言 DUAL is a public table that you can use to view results from functi ...
- jQuery 源码分析:当 selector 传来一个函数时,怎么进行处理?
本文章为 0.9 版本,将会在稍后润色更新.本文使用的 jQuery 版本为 3.4.0 我们知道使用 $ 操作符时,可以往里面塞很多类型的参数,字符串,对象,函数...,jQuery 会根据不同的参 ...
随机推荐
- 《从零开始学Swift》学习笔记(Day 37)——默认构造函数
原创文章,欢迎转载.转载请注明:关东升的博客 结构体和类的实例在构造过程中会调用一种特殊的init方法,称为构造函数.构造函数没有返回值,可以重载.在多个构造函数重载的情况下,运行环境可以根据它的外部 ...
- 常见的VC获取字符串长度的方法
字符串的长度通常是指字符串中包含字符的数目,但有的时候人们需要的是字符串所占字节的数目.常见的获取字符串长度的方法包括如下几种.后面有源码和最终效果图 1.使用sizeof获取字符串长度 sizeof ...
- JS replace()方法替换变量(可以对变量进行全文替换)
转至:http://blog.sina.com.cn/s/blog_6552200b0102ve60.html 事情是这样的: 我要用 JS 替换一个多行文本的关键字 正常,没有变量的时候应该是这样: ...
- python系列十一:python3数据结构
#!/usr/bin/python #Python3 数据结构'''Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能.''' '''将 ...
- 2015-02-07——js笔记
示例1: var abc; console.log(abc === undefined); console.log(abc === null); console.log(t ...
- [NOIP2018PJ]摆渡车
[NOIP2018PJ]摆渡车 luogu mdPJ组这么难,还好考的TG组 先按t排序 设f[i][j]表示前i个人,第i个人等j分钟的最小总等待时间 这里j是小于2m的 可以考虑最坏情况下,一个人 ...
- rpm命令相关命令运用实例
1) 挂载光盘文件到/media目录 2) 进去/media目录下的Packages目录 3) 查看系统已安装的所有rpm包 4) 查看系统是否安装dhcp软件包 5,安装dhcp软件包 6) 查看d ...
- 024-Spring Boot 应用的打包和部署
一.概述 二.手工打包[不推荐] 打包命令:maven clean package 打包并导出依赖:maven clean package dependency:copy-dependencies 1 ...
- 剑指offer 面试28题
面试28题: 题目:对称的二叉树题: 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的 解题思路: 可以定义一种遍历算法,先遍历右子节点再遍 ...
- Maven- 使用Maven构建一个可执行jar
How to Create an Executable JAR with Maven 1.最重要的是使用jar类型,<packaging>jar</packaging>.当然不 ...