PHP array_filter,如何在回调中获取密钥?

gre*_*emo 12 php arrays callback array-filter

array_filter - 使用回调函数过滤数组的元素

array array_filter(array $ input [,callback $ callback])

可以回调获取当前数组值的关键以及如何?

hos*_*eio 11

从文档:PHP 5.6.0添加了可选的标志参数和常量ARRAY_FILTER_USE_KEY和ARRAY_FILTER_USE_BOTH

http://php.net/manual/en/function.array-filter.php


hak*_*kre 8

在之前的评论中,您概述了您实际上正在寻找这样的事情:

foreach ($t as $k => $v)
    if (!array_key_exists($k, $valid))
        unset($t[$k])
Run Code Online (Sandbox Code Playgroud)

实际上,从数组$t中删除没有数组键的所有值$valid.

调用PHP的函数array_intersect_key.交集等于过滤结果:

$filtered = array_intersect_key($t, $valid);
Run Code Online (Sandbox Code Playgroud)


Syb*_*bio 5

通过使用ARRAY_FILTER_USE_BOTH常量,您可以获得 value 和 key :

array_filter($arrFoo, function ($value, $key) { return 'name' === $key && $value > 1 }, ARRAY_FILTER_USE_BOTH)
Run Code Online (Sandbox Code Playgroud)

通过使用ARRAY_FILTER_USE_KEY常量,您可以单独获取密钥:

array_filter($arrFoo, function ($key) { return 'name' === $key }, ARRAY_FILTER_USE_KEY)
Run Code Online (Sandbox Code Playgroud)


jon*_*ker 0

您可以使用此处讨论的 array_walk 函数(下方第三个答案):如果 array_filter 中的回调接收参数,是否可能?