Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查数组子键是否有空值_Php_Arrays - Fatal编程技术网

Php 检查数组子键是否有空值

Php 检查数组子键是否有空值,php,arrays,Php,Arrays,我有一个如下所示的数组: $arr = array( 'abc' => array( 'subkey1' => '', 'subkey2' => false, 'subkey3' => 0, ... ), 'def' => array(

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

$arr = array(

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

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

  ...

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

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

有更好的选择吗

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


外部将在数组上循环,并在每个子数组上调用内部,这将删除所有空的子键。如果每个子键都为空,则外部子键应移除整个子数组

如果未提供回调,则将删除所有等于FALSE的输入项(请参见转换为布尔值)

这个怎么样:

foreach ($arr as $index=>$element)
{
  if (in_array(0, $element))
  {
    unset($arr[$index]);
  }
}

你不是说在这种情况下应该取消设置abc?你所做的似乎是正确的方法,你可以使用递归,但条件也同样巨大。它必须使用循环来完成。看不到任何其他的方式,我正要发布这个。而且,只要有可能,我发现使用内置方法比使用自定义方法更好。唯一的问题是,这仍然会删除有效项的空子项。如果这是一个问题,你可以使用这个结果中的键,并与orig数组结合。。。但是你所说的
是什么意思。。。使用orig数组(/code>?
$final=array\u intersect\u key($origaray,array\u filter($origArray,'array\u filter'))
似乎没有必要,看看代码板输出:
def
的空子键出于某种原因仍然存在。对此有何解释?;)
foreach ($arr as $index=>$element)
{
  if (in_array(0, $element))
  {
    unset($arr[$index]);
  }
}