我有一个如下所示的数组:
$arr = array(
'abc' => array(
'subkey1' => '',
'subkey2' => false,
'subkey3' => 0,
...
),
'def' => array(
'subkey1' => '',
'subkey2' => 555,
'subkey3' => 0,
...
),
...
);
我想取消设置所有子键中所有子键都有空值的元素,例如0
,''
,false
,null
。在我的示例中,abc
需要取消设置。
目前我在foreach循环中手动检查每个子键是否为空,但if条件很大,因为我有8个子键:)
这有更好的选择吗?
答案 0 :(得分:7)
$array = array_filter($array, 'array_filter');
Array
(
[def] => Array
(
[subkey1] =>
[subkey2] => 555
[subkey3] => 0
)
)
外部array_filter()将遍历数组并调用每个子数组上的内部array_filter(),这将删除所有空的子键。如果每个子项都为空,则外部array_filter()应该删除整个子数组。
如果没有提供回调,则将删除所有输入等于FALSE的条目(请参阅转换为布尔值)。
答案 1 :(得分:0)
这个怎么样:
foreach ($arr as $index=>$element)
{
if (in_array(0, $element))
{
unset($arr[$index]);
}
}