这里的案例是过滤的二维数组,一维数组的话。。相信你看懂了下面示例的这个二维数组过滤。。一维数组更是不在话下了。。所以一维数组就不示例了。。
PHP按照某一元素值进行数组过滤,除了常用的遍历以外 我们可以用array_filter()函数实现,下面看示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | $arr = array ( 0 => array ( 'name' => '乔峰' , 'age' => 22, 'trick' => '降龙十八掌' ), 1 => array ( 'name' => '杨过' , 'age' => 26, 'trick' => '九阴真经' ), 2 => array ( 'name' => '张无忌' , 'age' => 22, 'trick' => '乾坤大挪移' ), ); //方式1 array_filter函数的第二个参数 直接写回调函数 function($variable){} $res = array_filter ( $arr , function ( $element ){ return $element [ 'age' ] == 22; //只保留$arr数组中的age元素为22的数组元素 }); var_dump( $res ); //输出结果如下: array (size=2) 0 => array (size=3) 'name' => string '乔峰' (length=6) 'age' => int 22 'trick' => string '降龙十八掌' (length=15) 2 => array (size=3) 'name' => string '张无忌' (length=9) 'age' => int 22 'trick' => string '乾坤大挪移' (length=15) //方式2 先定义一个函数 然后将函数传给array_filter()的第二个参数 function fun_callback( $element ) { //只保留array_filter()函数的第一个参数(第一个参数肯定是数组啦。)中的age元素为22的数组元素 return $element [ 'age' ] == 22; } $res = array_filter ( $arr , 'fun_callback' ); var_dump( $res ); //输出结果如下: array (size=2) 0 => array (size=3) 'name' => string '乔峰' (length=6) 'age' => int 22 'trick' => string '降龙十八掌' (length=15) 2 => array (size=3) 'name' => string '张无忌' (length=9) 'age' => int 22 'trick' => string '乾坤大挪移' (length=15) 以上两种写法方式都是可以的。。 为了防止有些人看不懂。。就都写出来吧。。 更多细节请参看手册。。 |
PS:array_filter($arr); 可以过滤空数组 无论是空数组 还是值是0 还是值是false 都会过滤掉(不过$arr只能是一维数组,二维数组还没试验过)
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论