PHP内置函数--array_fliter()

本文介绍了PHP的内置函数array_filter(),详细阐述了其作用、语法和参数,并通过三个实例展示了如何使用该函数进行元素过滤。实例包括只传入一个参数时过滤掉等值为false的元素,传入回调函数进行自定义过滤,以及利用$flag参数处理数组键的情况。在使用array_filter()时,应注意回调函数的参数和返回值,以及如何在匿名函数中访问外部变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作用:

用回调函数过滤( fliter )数组中的元素,在业务中需要对数组的元素进行过滤某些值处理的时候用,省去的循环,非常实用!

语法:

array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )

参数:

1. 必选参数 $array , 需要被处理的数组

2. 可选参数 $callback 处理数组元素的回调函数,如果没有提供回调函数,将过滤掉所有等值为 false 的元素

3. 可选参数 决定callback接收的参数形式 

ARRAY_FILTER_USE_KEY // - callback接受键名作为的唯一参数
ARRAY_FILTER_USE_BOTH // - callback同时接受键名和键值

学函数的要素  参数 + 返回值 = 作用

实例1 只传入一个参数

        $testArr = [
            'a',1,['a'],'',null,0,false,true
        ];

        print_r($testArr);

        $result = array_filter($testArr);

        print_r($result);
Array
(
    [0] => a
    [1] => 1
    [2] => Array
        (
            [0] => a
        )

    [3] => 
    [4] => 
    [5] => 0
    [6] => 
    [7] => 1
)
Array
(
    [0] => a
    [1] => 1
    [2] => Array
        (
            [0] => a
        )

    [7] => 1
)

等值为 false 的全部被过滤掉,这是一个十分需要注意的地方。如果业务中需要保存 0 等值,过滤的时候需要特别注意。

过滤之后,键值对保持不变

实例2 传入 callback 第二个参数

        $testArr = [
            'a',1,['a'],'',null,0,false,true
        ];

        print_r($testArr);

        $result = array_filter($testArr,function($value){
            if(!$value){
                return true;
            }
        });

        print_r($result);

传入回调函数,参数默认传入数组的值,在回调函数体内,进行业务逻辑,返回 true 的值被返回

Array
(
    [0] => a
    [1] => 1
    [2] => Array
        (
            [0] => a
        )

    [3] => 
    [4] => 
    [5] => 0
    [6] => 
    [7] => 1
)
Array
(
    [3] => 
    [4] => 
    [5] => 0
    [6] => 
)

实例3 $flag 传入 数组的键

        $testArr = [
            'a'=>1,'b'=>2,'c'=>3
        ];

        print_r($testArr);

        $result = array_filter($testArr,function($value,$key){
            if($key == 'b'){
                return true;
            }
        },1);

        print_r($result);

结果:

Array
(
    [a] => 1
    [b] => 2
    [c] => 3
)
Array
(
    [b] => 2
)

拓展,回调函数,即匿名函数需要外部的变量,用use

        $testArr = [
            'a'=>1,'b'=>2,'c'=>3
        ];

        $var = 'a';

        print_r($testArr);

        $result = array_filter($testArr,function($value,$key)use($var){

            if($key == $var){
                return true;
            }
        },1);

        print_r($result);
Array
(
    [a] => 1
    [b] => 2
    [c] => 3
)
Array
(
    [a] => 1
)

就能取到外部变量 $var 了!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值