定义和用法 array_filter() 函数用回调函数过滤数组中的元素。该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回给结果数组。数组键名保持不变。
定义和用法
array_filter()
函数用回调函数过滤数组中的元素。
该函数把输入数组中的每个键值传给回调函数。
如果回调函数返回 true,则把输入数组中的当前键值返回给结果数组。
数组键名保持不变。
语法
array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
参数解释:
参数 | 描述 |
---|---|
array | 必需。规定要过滤的数组。 |
callback | 可选。规定要用的回调函数。 |
flag | 可选。决定 callback 接收的参数形式:ARRAY_FILTER_USE_KEY - callback 接受键名作为的唯一参数 ARRAY_FILTER_USE_BOTH - callback 同时接受键名和键值 |
演示案例
<?php
class Test {
public function odd($var)
{
// 返回输入整数是否为奇数(单数)
if (is_numeric($var)) {
return $var & 1;
}
}
public function even($var)
{
// 返回输入整数是否为偶数
if (is_numeric($var)) {
return !($var & 1);
}
}
public function index()
{
// 数组一
$array_one = ['a' => 0, 'b' => null, 'c' => '', 'd' => 101, 'e' => 202, 'f'=> 303, 'g'=> 304, 'h'=>true, 'i'=>false];
// 数组二
$array_two = [0, '', null, 101, 202, 303, 404, 505, 606, true];
// 数组三
$array_three = [0 => 0, "" => null, 2 => '', 'null' => 101, 4 => 202, 5 => 303, 6 => 304, 7=>true];
// 不用回调函数过滤数组中的元素(会过滤掉空值、0、null)
echo "直接过滤数组中的元素(会过滤掉空值、0、'0'、'' 、null、false),无回调函数 :\n";
var_dump(array_filter($array_one));
// 返回结果
// array(5) {
// ["d"]=>
// int(101)
// ["e"]=>
// int(202)
// ["f"]=>
// int(303)
// ["g"]=>
// int(304)
// ["h"]=>
// bool(true)
// }
// 用回调函数过滤数组中的元素:
echo "取数组中 奇数值,\$this 表示当前类中寻找 odd函数, Odd :\n";
var_dump(array_filter($array_one, array($this, "odd")));
// 返回结果
// array(2) {
// ["d"]=>
// int(101)
// ["f"]=>
// int(303)
// }
echo "取数组中 偶数值,\$this 表示当前类中寻找 even函数, Even:\n";
var_dump(array_filter($array_two, array($this, "even")));
// 返回结果
// array(4) {
// [0]=>
// int(0)
// [4]=>
// int(202)
// [6]=>
// int(404)
// [8]=>
// int(606)
// }
// 用回调函数过滤数组中的元素:
echo "针对健 的数据过滤,第三个参数:ARRAY_FILTER_USE_KEY(将键名作为 callback 回调的唯一参数,而不是值) :\n";
var_dump(array_filter($array_three, function($key) {
if($key === '' || $key === null || $key === 'null' || !is_numeric($key)){
return false;
}
return true;
}, ARRAY_FILTER_USE_KEY));
// 返回结果
// array(6) {
// [0]=>
// int(0)
// [2]=>
// string(0) ""
// [4]=>
// int(202)
// [5]=>
// int(303)
// [6]=>
// int(304)
// [7]=>
// bool(true)
// }
// 用回调函数过滤数组中的元素:
echo "针对健值 的数据过滤 第三个参数:ARRAY_FILTER_USE_BOTH(将值和键都作为参数传递给 callback 回调,而不是仅传递值):\n";
var_dump(array_filter($array_three, function($value, $key) {
if($value === '' || $value === null || !is_numeric($value) || $key === '' || $key === null || !is_numeric($key) || $key === 0){
return false;
}
return true;
}, ARRAY_FILTER_USE_BOTH));
// array(3) {
// [4]=>
// int(202)
// [5]=>
// int(303)
// [6]=>
// int(304)
// }
}
}
?>
转载注明:
感谢博主,喝杯咖啡~
感谢博主,喝杯咖啡~
还没有人发表评论