PHP array_filter 递归
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));
RETURN 只有 1 件商品
如果我更改功能,如 return $key != 'access';
它 return 数组没有 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;
}
请帮我过滤数组
我有数组:
$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));
RETURN 只有 1 件商品
如果我更改功能,如 return $key != 'access';
它 return 数组没有 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;
}