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 会根据不同的参 ...
随机推荐
- 【BZOJ3239】Discrete Logging BSGS
[BZOJ3239]Discrete Logging Description Given a prime P, 2 <= P < 231, an integer B, 2 <= B ...
- 1674 区间的价值 V2(分治)
1674 区间的价值 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 lyk拥有一个区间. 它规定一个区间的价值为这个区间中所有数and起来的值与这个区间所有 ...
- 时间格式化输出strtime
The format argument consists of one or more codes; as in printf, the formatting codes are preceded b ...
- Docker + ElasticSearch + Node.js
最近有空就想研究下ElasticSearch. 此篇文章用来记录研究过程.备注:需要有一定的docker基础,ElasticSearch的基本概念 Docker安装ElasticSearch 首先,就 ...
- 线程锁、threading.local(flask源码中用的到)、线程池、生产者消费者模型
一.线程锁 线程安全,多线程操作时,内部会让所有线程排队处理.如:list/dict/Queue 线程不安全 + 人(锁) => 排队处理 1.RLock/Lock:一次放一个 a.创建10个线 ...
- Servlet 运行原理
一:servlet定义 Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序. 二:简单servlet实例 //导入所需的包 import javax.servle ...
- 交叉熵(Cross-Entropy) [转载]
交叉熵(Cross-Entropy) 交叉熵是一个在ML领域经常会被提到的名词.在这篇文章里将对这个概念进行详细的分析. 1.什么是信息量? 假设X是一个离散型随机变量,其取值集合为X,概率分布函数为 ...
- adb通过TCP/IP连接提示 unable to connect to *, Connection refused的解决方法
通过串口连接板子进入命令行,然后执行: su setprop service.adb.tcp.port 5555 stop adbd start adbd
- 1.4 使用电脑测试MC20的接收英文短信功能
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- 剑指offer 面试66题
面试66题: 题目:构建乘积数组 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]* ...