【发布时间】:2018-05-25 14:10:11
【问题描述】:
我正在尝试通过删除permission 值为no 的子数组来过滤多维数组。
我的数组:
$array = array(
array(
'name' => 'dashboard',
'permission' => 'yes'
),
array(
'name' => 'Purchase Orders',
'permission' => 'yes',
'dropdown' => array(
array(
'name' => 'View Complete',
'permission' => 'yes'
),
array(
'name' => 'New PO',
'permission' => 'no'
)
)
),
array(
'name' => 'dashboard',
'permission' => 'no'
)
);
这是我想要的结果:(注意所有带有permission=>'no' 的组已被完全删除)
$array = array(
array(
'name' => 'dashboard',
'permission' => 'yes'
),
array(
'name' => 'Purchase Orders',
'permission' => 'yes',
'dropdown' => array(
array(
'name' => 'View Complete',
'permission' => 'yes'
)
)
)
);
将array_filter() 与回调函数一起使用在第一级上非常简单,但我无法找到一个简单的解决方案来在每个级别上都这样做。
目前我的解决方案是循环并取消设置每个键,但它需要知道数组的确切结构并且感觉很混乱。
【问题讨论】:
-
是否总是深达 2 层?
-
您可以递归并检查元素是否为is_array 的数组并检查权限值。这样你就不必知道结构有多深。
标签: php recursion multidimensional-array filter array-unset