1 <?php 2 function test_odd($var) 3 { 4 return($var & 1); 5 } 6 7 $a1=array("a","b",2,3,4); 8 print_r(array_filter($a1,"test_odd")); 9 ?>
会返回
1 Array ( [3] => 3 )
定义和用法
array_filter() 函数用回调函数过滤数组中的值。
该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变。
语法
array_filter(array,callbackfunction);
参数 | 描述 |
---|---|
array | 必需。规定要过滤的数组。 |
callbackfunction | 必需。规定要使用的回调函数。 |
技术细节
返回值: | 返回过滤的数组。 |
PHP 版本: | 4.0.6+ |
注:回调函数中的 return($var & 1); 表示在1转换成二进制 0001 后,传入的 $var 变量,如果是数字,则在转换成二进制后,其倒数第一位必须是1,如果是字符串则会转换成对应的ASCII码然后再进行操作。
同理,如果把 1 换成 3 , 因为 3 的倒数第一二位都为1,且2的倒数第二位也为1,所以会输出 2 ,3 , 4 这三个数组元素。
如果还没理解可以搜索 PHP位运算符,或者是参考这个网址 http://jingyan.baidu.com/album/6181c3e06f8602152ff1537a.html?picindex=1 我认为它讲得比较清楚
一到十二进制如下所示:
1→0001
2→0010
3→0011
4→0100
5→0101
6→0110
7→0111
8→1000
9→1001
10→1010