array_filter()
用回调函数对数组进行过滤,返回由回调函数return true的当前数组元素构成的数组;
警告 :
回调函数不能够传递引用参数,达到修改数组键值的目的;
基础语法:
array array_filter(array $array , callback $callback [, constant $flags = NULL])
array 返回数组;
array $array 需要被过滤的原始数组;
callback $callback 回调函数;可能的参数是 $val | $key [,$key];
constant $flags 确定传递给回调函数的实参的常量;
constant 可能的值:
NULL 传递的参数是键值;
ARRAY_FILTER_USE_KEY; 传递的参数是 键名
ARRAY_FILTER_USE_BOTH; 传递的参数是键值 + 键名;
语法结构1:
array_filter(array $array ,callback $callback)
把数组的键值传递给回调函数,返回过滤后的数组;
实例:
$a_int = range(1,10);
function filter_int_array($val){
if($val%2 == 0){
return true;
}
}
print_r(array_filter($a_int,'filter_int_array'));
#output : array(2,4,6,8,10);
语:法结构2:
array_filter(array $array,callback $callback,ARRAY_FILTER_USE_KAY);
把数组的键名传递给函数,返回 函数返回值是true的数组元素组成的数组;
实例:
$a_personal_name = array('bill','tom','jack','david',);
function filter_key($key){
if($key%2 == 0){
return true;
}
}
print_r(array_filter($a_personal_name , 'filter_key',ARRAY_FILTER_USE_KEY));
#output : array[0]=>'bill',([2]=> 'jack')
语法结构3:
array_filter(array $array , callback $callback ,ARRAY_FILTER_USE_BOTH);
把数组的键值和键名同时传递给callback $callback,当函数返回true是,把当前数组元素复制给最终返回的数组;
实例:
$a_personal_age = array('bill'=>33,'tom'=>20,'jack'=>16,'david'=>25);
function get_people($val,$key){
if($val >18 && $key != 'bill'){
return true;
}
}
print_r(array_filter($a_personal_age,'get_people',ARRAY_FILTER_USE_BOTH));
#output : array('tom'=>20,'david'=>25)