深入解析PHP的array_filter函数
1. array_filter的基本用法
array_filter函数是PHP中常用的数组处理函数之一,用于过滤数组元素。使用 array_filter 函数时,必须传递一个数组作为函数的第一个参数,然后可以传递一个回调函数来指定过滤条件。
$arr = array(1, 2, 3, '', NULL, 0, 'hello', false);
function callback($val)
{
return $val !== '' && $val !== NULL && $val !== false && $val !== 0;
}
$result = array_filter($arr, 'callback');
print_r($result);
在上面的代码中,我们使用回调函数来过滤数组,只留下非空和非0元素,并将结果存储在$result数组中。执行上述代码时,输出为:
Array
(
[0] => 1
[1] => 2
[2] => 3
[6] => hello
)
如您所见,array_filter 函数留下非空和非 0 元素。
2。 array_filter的高级使用
除了使用回调函数之外,array_filter函数还有一些高级用途,可以让我们更方便地处理数组。
1。使用匿名函数作为回调函数
通过使用匿名函数,我们可以避免为每个过滤条件定义一个函数。
$arr = array(1, 2, 3, '', NULL, 0, 'hello', false);
$result = array_filter($arr, function($val){
return $val !== '' && $val !== NULL && $val !== false && $val !== 0;
});
print_r($result);
使用匿名函数过滤数组,结果与上例相同。
2。使用按位运算过滤字段的元素
array_filter函数还可以使用按位运算符来过滤数组元素。
$arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
$result = array_filter($arr, function($key){
return (bool)($key & 1);
}, ARRAY_FILTER_USE_KEY);
print_r($result);
在上面的代码中,我们使用了数组常量ARRAY_FILTER_USE_KEY。这个常量意味着我们使用按位运算符来过滤数组元素。使用 (1&$key) 意味着过滤数组中具有奇数索引的元素。
执行上面的代码,输出为:
Array
(
[0] => 1
[2] => 3
[4] => 5
[6] => 7
[8] => 9
)
3。 array_filter函数的实际使用示例
array_filter函数常用于处理数组。以下是一些实际用例。
1。删除数组中的 null 或空字符串
$arr = array(1, 2, '', 3, null, 'hello', '');
$arr = array_filter($arr);
print_r($arr);
执行上面的代码,输出为:
Array
(
[0] => 1
[1] => 2
[3] => 3
[5] => hello
)
2。执行类似于 SQL 的 WHERE 子句
我们可以结合回调函数来实现类似SQL的WHERE子句。
$users = array(
array('name' => '张三', 'age' => 25, 'gender' => '男'),
array('name' => '李四', 'age' => 30, 'gender' => '男'),
array('name' => '王五', 'age' => 20, 'gender' => '女'),
array('name' => '赵六', 'age' => 43, 'gender' => '男'),
array('name' => '小七', 'age' => 18, 'gender' => '女'),
);
$filters = array(
'age' => array('>=' => 30),
'gender' => '男'
);
function where($item, $filters){
foreach ($filters as $key => $value) {
if (is_array($value)) {
switch (key($value)) {
case '>=':
if ($item[$key] 版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
上一篇:PHP JsonDecode 函数解析 JSON 数据 下一篇:数学函数集合
code前端网