PHP 数组函数

PHP array_filter()函数的功能是使用用户自定义函数(回调函数)的方式过滤数组的元素。

语法

array_filter(array,function, mode) 

参数

参数说明可选/必须
array要操作的数组必须
function

用户自定义函数。函数的返回值

  • true:保留该数组值
  • false:过滤掉该数组值
可选
mode

回调函数中接受参数的方式,其默认值为0,表示只传递键值,另外两个值解释如下:

  • ARRAY_FILTER_USE_KEY = 1,表示键名作为参数的接收
  • ARRAY_FILTER_USE_BOTH = 2 , 将键值和键名都传递。
可选
如果回调函数为空,array_filter() 将删除 原数组中所有等值为 FALSE或null,空 的元素。

返回值

返回过滤后的数组

例子

介绍一些例子,了解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"
}

 例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)
}

 例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"
}