php筛选数组,php使⽤array_filter()过滤数组键值
PHP 5.6为
例如下⾯的代码:
$my_array = ['foo' => 1, 'hello' => 'world'];
$allowed = ['foo', 'bar'];
$filtered = array_filter(
$my_array,
function ($key) use ($allowed) {undefined
return in_array($key, $allowed);
},
ARRAY_FILTER_USE_KEY
)
;
显然,这不如array_intersect_key($my_array, array_flip($allow))优雅,但它确实提供了对键执⾏任意测试的额外灵活性,例
如,$allow可以包含正则表达式模式,⽽不是普通字符串。
您还可以使⽤ARRAY_FILTER_USE_BOTH将值和键传递给您的筛选函数。这⾥有⼀个基于第⼀个设计的例⼦,但是请注意,俺不推荐使⽤$允许的编码过滤规则:
$my_array = ['foo' => 1, 'bar' => 'baz', 'hello' => 'wld'];
$allowed = ['foo' => true, 'bar' => true, 'hello' => 'world'];
$filtered = array_filter(
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']

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。