PHP array_filter()
函数的功能是使用用户自定义函数(回调函数)的方式过滤数组的元素。
语法
array_filter(array,function, mode)
参数
参数 | 说明 | 可选/必须 |
---|---|---|
array | 要操作的数组 | 必须 |
function | 用户自定义函数。函数的返回值
| 可选 |
mode | 回调函数中接受参数的方式,其默认值为0,表示只传递键值,另外两个值解释如下:
| 可选 |
返回值
返回过滤后的数组
例子
介绍一些例子,了解PHP array_filter()函数的用法。
例1
回调函数为空的情况,它将过滤false,空,null的元素。
<?php
$arr = array('red',null,'yellow','orange','',false);
$result=array_filter($arr);
var_dump($result);
?>
输出:array(3) {
[0]=>
string(3) "red"
[2]=>
string(6) "yellow"
[3]=>
string(6) "orange"
}
[0]=>
string(3) "red"
[2]=>
string(6) "yellow"
[3]=>
string(6) "orange"
}
例2
有回调函数的例子
<?php
//过滤函数
function my_filter($color){
//这里仅仅去掉不等于 ''的元素
if ($color !== '') {
return true;
}
return false;
}
$arr = array('red',null,'yellow','orange','',false);
$result=array_filter($arr,'my_filter');
var_dump($result);
?>
array(5) {
[0]=>
string(3) "red"
[1]=>
NULL
[2]=>
string(6) "yellow"
[3]=>
string(6) "orange"
[5]=>
bool(false)
}
[0]=>
string(3) "red"
[1]=>
NULL
[2]=>
string(6) "yellow"
[3]=>
string(6) "orange"
[5]=>
bool(false)
}
例3
有第三个参数Mode的例子,我们这里使用ARRAY_FILTER_USE_BOTH 这个值,即回调函数接收键名和键值作为参数。
<?php
//注意:这里$v,和$k的顺序写法
function my_filter($v, $k){
if ($v == 'red' && $k == 'a') {
return true;
}
return false;
}
$color = array("c"=>"yellow","b"=>"green","a"=>"red");
$result=array_filter($color,'my_filter', ARRAY_FILTER_USE_BOTH);
var_dump($result);
?>
输出:array(1) {
["a"]=>
string(3) "red"
}
["a"]=>
string(3) "red"
}