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