Products
GG网络技术分享 2025-03-18 16:17 3
array_filter() 是 PHP 中的一个函数,用于过滤数组中的值,保留那些满足指定回调函数返回值不为 false 的元素。这个函数非常适合用于清洗数据和根据某些条件筛选数组元素。
$filteredArray = array_filter($array, $callback, $flag);
$array 是你想要过滤的数组。
$callback 是一个回调函数,用于检查每个元素是否应该被保留。这个回调函数的返回值决定了元素的命运:如果返回值为 true,则元素被保留;如果返回值为 false,则元素被移除。
$flag 是一个可选参数,用于控制回调函数的执行方式。它可以是 ARRAY_FILTER_USE_KEY(当设置时,回调函数接收数组键作为参数),ARRAY_FILTER_USE_INDEX(回调函数接收数组索引作为第二个参数),或者 ARRAY_FILTER_USE_BOTH(回调函数同时接收数组键和索引作为参数)。
// 过滤数组,只保留大于 10 的值
$numbers = array(1, 5, 10, 15, 20);
$filteredNumbers = array_filter($numbers, function($value) {
return $value > 10;
});
print_r($filteredNumbers); // 输出 Array ( [3] => 15 [4] => 20 )
// 过滤关联数组,只保留值大于 10 的键/值对
$assocArray = array(5 => 7, 10 => 12, 15 => 17, 20 => 22);
$filteredAssocArray = array_filter($assocArray, function($value) {
return $value > 10;
});
print_r($filteredAssocArray); // 输出 Array ( [10] => 12 [15] => 17 [20] => 22 )
// 使用回调函数的第二个参数(数组索引)
$filteredArrayWithIndex = array_filter($numbers, function($value, $index) {
return ($value + $index) % 2 === 0;
}, ARRAY_FILTER_USE_BOTH);
print_r($filteredArrayWithIndex); // 输出 Array ( [0] => 1 [2] => 10 [4] => 20 )array_filter() 不会改变原始数组,而是返回一个新的过滤后的数组。
回调函数应该返回布尔值。返回 true 表示元素应该被保留,返回 false 表示元素应该被移除。
如果你不需要使用回调函数的额外参数(数组键或索引),你可以传递 null 作为 $callback 参数。
当使用 ARRAY_FILTER_USE_KEY 或 ARRAY_FILTER_USE_INDEX 时,回调函数的参数数量应该与 $flag 参数相匹配。
array_filter() 可以与匿名函数(闭包)、命名函数或任何有效的回调类型一起使用。
array_filter() 是一个非常有用的函数,可以帮助你根据复杂的条件筛选数组元素。通过编写适当的回调函数,你可以实现高度定制化的过滤逻辑。
Demand feedback