php数组(十二) array_filter
array_filter — 使用回调函数过滤数组的元素
array_filter(array
$array
, ?callable $callback
= null
, int $mode
= 0): array遍历 array
数组中的每个值,并将每个值传递给 callback
回调函数。 如果 callback
回调函数返回 true
,则将 array
数组中的当前值返回到结果 array 数组中。
返回结果 array 数组的键名(下标)会维持不变,如果 array
参数是索引数组,返回的结果 array 数组键名(下标)可能会不连续。 可以使用 array_values() 函数对数组重新索引。
参数:
array
- 要遍历的数组
callback
- 使用的回调函数
- 如果没有提供
callback
回调函数,将删除数组中array
的所有“空”元素。 有关 PHP 如何判定“空”元素,请参阅 empty() 。
mode
决定哪些参数发送到 callback
回调的标志:
ARRAY_FILTER_USE_KEY
- 将键名作为callback
回调的唯一参数,而不是值ARRAY_FILTER_USE_BOTH
- 将值和键都作为参数传递给callback
回调,而不是仅传递值
默认值为 0
,只传递值作为 callback
回调的唯一参数。
1、过滤数据中的空元素
1 2 3 4 5 | <?php $arr = array ( 'a' => 'apple' , 'b' => 'banana' , "c" ,1, 0, "" , "d" => null); $arr = array_filter ( $arr ); var_dump( $arr ); ?> |
输出: 会过滤掉key或值为空的所有元素
1 2 3 4 5 6 7 | Array ( [a] => apple [b] => banana [0] => c [1] => 1 ) |
2、使用回调函数过滤数组中的元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php function odd( $var ) { // 返回输入整数是否为奇数(单数) return $var & 1; } function even( $var ) { // 返回输入整数是否为偶数 return !( $var & 1); } $array1 = [ 'a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5]; $array2 = [6, 7, 8, 9, 10, 11, 12]; echo "Odd :\n" ; print_r( array_filter ( $array1 , "odd" )); echo "Even:\n" ; print_r( array_filter ( $array2 , "even" )); ?> |
输出:根据回调返回的true或者false过滤数组元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Odd : Array ( [a] => 1 [c] => 3 [e] => 5 ) Even: Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 ) |
3、第三个参数控制,传入回调函数的是键还是值
1 2 3 | print_r( array_filter ( $array1 , function ( $val ){ }, ARRAY_FILTER_USE_KEY)); |
分类:
php相关
posted on 2021-08-06 16:55 1450811640 阅读(67) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~