array_filter
(PHP 4 >= 4.0.6, PHP 5)
array_filter — 用回调函数过滤数组中的单元
说明
array array_filter ( array
$input
[, callable $callback
= "" ] )依次将 input
数组中的每个值传递到 callback
函数。如果 callback
函数返回 TRUE
,则 input
数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。
返回值
返回过滤后的数组。
范例
Example #1 array_filter() 例子
1 <?php 2 function odd ( $var ) 3 { 4 // returns whether the input integer is odd 5 return( $var & 1 ); 6 } 7 8 function even ( $var ) 9 { 10 // returns whether the input integer is even 11 return(!( $var & 1 )); 12 } 13 14 $array1 = array( "a" => 1 , "b" => 2 , "c" => 3 , "d" => 4 , "e" => 5 ); 15 $array2 = array( 6 , 7 , 8 , 9 , 10 , 11 , 12 ); 16 17 echo "Odd : " ; 18 print_r ( array_filter ( $array1 , "odd" )); 19 echo "Even: " ; 20 print_r ( array_filter ( $array2 , "even" )); 21 ?>
以上例程会输出:
Odd : Array ( [a] => 1 [c] => 3 [e] => 5 ) Even: Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 )
Example #2 array_filter() 无 callback
1 <?php 2 3 $entry = array( 4 0 => 'foo' , 5 1 => false , 6 2 => - 1 , 7 3 => null , 8 4 => '' 9 ); 10 11 print_r ( array_filter ( $entry )); 12 ?>
以上例程会输出:
Array ( [0] => foo [2] => -1 )
注释
Caution
用户不应在回调函数中修改数组本身。例如增加/删除单元或者对 array_filter() 正在作用的数组进行 unset。如果数组改变了,此函数的行为将不可预测。
参见
- array_map() - 将回调函数作用到给定数组的单元上
- array_reduce() - 用回调函数迭代地将数组简化为单一的值
- array_walk() - 对数组中的每个成员应用用户函数