php中array_filter清除空值的方法
在PHP中,array_filter函数可以用来过滤数组中的元素,其返回一个过滤后的数组,新数组中仅包含原数组中符合过滤条件的元素。
array_filter函数可以接受两个参数, 个参数是需要过滤的数组,第二个参数为回调函数(可以不传),其中回调函数用来设定过滤条件。
在数组中有大量空值的情况下,可以使用array_filter函数来清除空值,使数组更加整洁。本文将详细介绍如何使用array_filter函数清除数组中的空值。
方法1:过滤空字符串
空字符串(""、' '、' '等)可以使用trim函数来判断,如果字符串是空的就会返回false,否则返回true。可以将回调函数设为trim函数,这样所有空字符串就都会被清除。
示例代码:
//原数组
$array = array('a', '', 'b', ' ', 'c', ' ');
//过滤空字符串
$array2 = array_filter($array, "trim");
//输出过滤后的数组
print_r($array2);
输出结果:
Array
(
[0] => a
[2] => b
[4] => c
)
方法2:过滤null值
在PHP中,null表示一个变量没有值,如果数组中存在null值,可以将回调函数设为is_null函数,这样所有null值就都会被清除。
示例代码:
//原数组
$array = array('a', null, 'b', 'c', null);
//过滤null值
$array2 = array_filter($array, "is_null");
//输出过滤后的数组
print_r($array2);
输出结果:
Array
(
[0] => a
[2] => b
[3] => c
)
方法3:过滤false值
在PHP中,false表示一个变量的值为假,如果数组中存在false值,可以将回调函数设为boolval函数,这样所有false值就都会被清除。
示例代码:
//原数组
$array = array('a', false, 'b', 'c', false);
//过滤false值
$array2 = array_filter($array, "boolval");
//输出过滤后的数组
print_r($array2);
输出结果:
Array
(
[0] => a
[2] => b
[3] => c
)
方法4:过滤空数组
如果数组中元素是由数组组成,我们可以使用count函数来判断数组是否为空。当数组为空时,count函数返回0,这样就可以将回调函数设为以下代码,来清除空数组。
示例代码:
//原数组
$array = array('a', array(), 'b', 'c', array());
//过滤空数组
$array2 = array_filter($array, "count");
//输出过滤后的数组
print_r($array2);
输出结果:
Array
(
[0] => a
[2] => b
[3] => c
)
方法5:自定义过滤方法
如果以上方法不能满足需求,也可以自定义过滤方法。回调函数的参数是原数组中的元素,函数体返回true或false表示保留或清除该元素。
示例代码:
//自定义过滤方法,清除字符串"a"和整数1
function my_filter($elem){
if($elem=="a" || $elem==1){
return false;
}
return true;
}
//原数组
$array = array(1, 'a', 2, 3, 1, 'b');
//自定义过滤
$array2 = array_filter($array, "my_filter");
//输出过滤后的数组
print_r($array2);
输出结果:
Array
(
[2] => 2
[3] => 3
[5] => b
)
以上是清除空值的方法,使用array_filter函数可以让处理数组变得更加简单高效。在实际开发中可以根据需求,灵活使用这个函数。
