[英]PHP array_filter Recursive
请帮我过滤数组
我有数组:
$arr=[
'test' => [
'access' => 111,
'aa' => [
'access'=> 222,
'bb' => 333
],
],
'access' => 444,
'value' => 555
];
我想要
$arr=[
'test' => [
'access' => 111,
'aa' => [
'access'=> 222,
],
],
'access' => 444,
];
我愿意
function array_filter_recursive($input)
{
foreach ($input as &$value) {
if (is_array($value)) {
$value = array_filter_recursive($value);
}
}
return array_filter($input,function ($key){
return $key == 'access';
},ARRAY_FILTER_USE_KEY);
}
var_dump(array_filter_recursive($arr));
仅返回 1 项
如果我改变函数,如return $key != 'access';
它返回没有key==access
数组,但如果 $key == 'access' 则它不起作用
如果键不是命名access
并且值不是嵌套数组,则您只想删除它。 这样,您可以保留任何中间数组。
您不能使用array_filter()
,因为它只接收值,而不接收键。 所以在你的foreach
循环中这样做。
function array_filter_recursive($input)
{
foreach ($input as $key => &$value) {
if (is_array($value)) {
$value = array_filter_recursive($value);
if (empty($value)) {
unset($input[$key]));
}
} elseif ($key != 'access') {
unset($input[$key]);
}
}
return $input;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.