3

我有一个看起来像这样的数组:

$arr = array(

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

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

  ...

);

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

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

有更好的选择吗?

4

2 回答 2

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

在键盘上查看输出

Array
(
    [def] => Array
        (
            [subkey1] => 
            [subkey2] => 555
            [subkey3] => 0
        )

)

外部array_filter()将遍历数组并在每个子数组上调用内部array_filter(),这将删除所有为空的子键。如果每个子键为空,则外部array_filter()应删除整个子数组。

如果没有提供回调,则所有等于 FALSE 的输入条目(请参阅转换为布尔值)都将被删除。

于 2012-06-23T19:54:20.457 回答
0

这个怎么样:

foreach ($arr as $index=>$element)
{
  if (in_array(0, $element))
  {
    unset($arr[$index]);
  }
}
于 2012-06-23T20:12:44.503 回答