检查数组子键是否为空值

时间:2012-06-23 19:49:42

标签: php arrays

我有一个如下所示的数组:

$arr = array(

  'abc' => array(
             'subkey1' => '',
             'subkey2' => false,             
             'subkey3' => 0,  
             ...                          
           ),

  'def' => array(
             'subkey1' => '',
             'subkey2' => 555,             
             'subkey3' => 0,  
             ...                          
           ),

  ...

);

我想取消设置所有子键中所有子键都有空值的元素,例如0''falsenull。在我的示例中,abc需要取消设置。

目前我在foreach循环中手动检查每个子键是否为空,但if条件很大,因为我有8个子键:)

这有更好的选择吗?

2 个答案:

答案 0 :(得分:7)

$array = array_filter($array, 'array_filter');

View the output on codepad

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]);
  }
}