php数组过滤字段,PHP:如何使用Array_filter()来过滤数组键?

3e0d8f255eb05515b8a823d7c2bbf2cc.png

胡子哥哥

PHP 5.6引入了第三个参数array_filter(), flag,您可以设置为ARRAY_FILTER_USE_KEY按键而不是值过滤:$my_array = ['foo' => 1, 'hello' => 'world'];$allowed  = ['foo', 'bar'];$filtered = array_filter(

    $my_array,

    function ($key) use ($allowed) {

        return in_array($key, $allowed);

    },

    ARRAY_FILTER_USE_KEY);显然这不像array_intersect_key($my_array, array_flip($allowed)),但它确实提供了对密钥执行任意测试的额外灵活性。$allowed可以包含regex模式而不是普通字符串。您也可以使用ARRAY_FILTER_USE_BOTH将值和键传递给筛选函数。下面是一个基于第一个示例的人为示例,但请注意,我不建议使用$allowed这样:$my_array = ['foo' => 1, 'bar' => 'baz', 'hello' => 'wld'];$allowed  = ['foo' => true, 'bar' => true, 'hello' => 'world'];$filtered = array_filter(

    $my_array,

    function ($val, $key) use ($allowed) { // N.b. $val, $key not $key, $val

        return isset($allowed[$key]) && (

            $allowed[$key] === true || $allowed[$key] === $val        );

    },

    ARRAY_FILTER_USE_BOTH); // ['foo' => 1, 'bar' => 'baz']

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值