【PHP】函数array_filter():用于通过回调函数过滤数组中的每个元素

目录

示例1:基本过滤

示例2:过滤数组中的空字符串

示例3:使用匿名函数

 示例4:包括空字符串和空数组

示例5:筛选


array_filter() 是一个 PHP 函数,用于通过回调函数过滤数组中的每个元素。它会遍历数组中的每个元素,将每个元素传递给回调函数。如果回调函数返回 true,则保留数组中的当前元素;否则,删除数组中的当前元素。

函数语法如下:

array_filter(array $array, callable $callback, int $mode = 0): array

参数:

  • $array:要过滤的数组。
  • $callback:回调函数,用于确定是否保留数组中的当前元素。如果省略此参数,则默认使用 boolval() 函数。
  • $flag:可选的标志,用于修改过滤行为。支持的标志有:
    • ARRAY_FILTER_USE_KEY:将数组键传递给回调函数。
    • ARRAY_FILTER_USE_BOTH:将数组键和值作为数组传递给回调函数。

返回值:

返回过滤后的数组。

下面是一些示例:

示例1:基本过滤


$array = [1, 2, 3, 4, 5];

// 过滤出大于3的元素
$filteredArray = array_filter($array, function($value) {
    return $value > 3;
});

print_r($filteredArray);
// 输出: Array ( [1] => 4 [2] => 5 )

// 过滤数组中的偶数
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$filtered = array_filter($array, function ($value) {
    return $value % 2 == 0;
});
print_r($filtered); 
// 输出:Array ( [1] => 2 [3] => 4 [5] => 6 [7] => 8 )

示例2:过滤数组中的空字符串


$array = ['apple', '', 'banana', null, 'cherry', false, 'durian'];
$filtered = array_filter($array);
print_r($filtered); 
// 输出:Array ( [0] => apple [2] => banana [4] => cherry [6] => durian )

示例3:使用匿名函数


$array = ['a', 'b', 'c', 'd'];

// 过滤出以字母 'c' 开头的元素
$filteredArray = array_filter($array, function($value) {
    return strpos($value, 'c') === 0;
});

print_r($filteredArray);
// 输出: Array ( [2] => c [3] => d )

 示例4:包括空字符串和空数组


$array = ['a', '', 'b', [], 'c'];

// 过滤出非空元素
$filteredArray = array_filter($array, function($value) {
    return !empty($value);
}, FILTER_INCLUDE_EMPTY);

print_r($filteredArray);
// 输出: Array ( [0] => a [2] => b [3] => c )

示例5:筛选


$array = ['id'=>1, 'id'=>2, 'id'=>3, 'id'=>4, 'id'=>5];
$id = 3;

$filteredArray = array_filter($array, function ($item) use ($id) {
    return $item['id'] == $id;
});

在使用 array_filter() 时,请注意它不会改变原始数组,而是返回一个新的过滤后的数组。此外,回调函数必须是一个可调用的类型,如普通函数、匿名函数、对象方法等。
 

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zzoood

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值