我的数组看起来像这样
Array ( [] => )
对我来说它是空的,我正在寻找一种方法来检查它。
首先想到:
if( empty($array) ){
echo 'Array is empty!';
}
对于empty-function,我的数组不为空。 “真正的”空数组如下所示:Array()。
第二个想法:
if( $array[''] == '' ){
echo 'Array is empty!';
}
对于我的空数组,这是正确的,但是对于不包含这样的空键值对的任何其他数组都会抛出错误。
有什么想法吗?
我的数组的Var_dump:
array(1) { [""]=> NULL }
答案 0 :(得分:6)
快速解决方法:
$array = array_filter($array);
if (empty($array)) {
echo 'Array is empty!';
}
array_filter()
函数的默认行为将从数组中删除所有等于null
,0
,''
或false
如果您想保留0
,则必须使用回调函数。它将迭代数组中的每个值,并将它们传递给回调函数。如果回调函数返回true,则将数组中的当前值返回到结果数组中。
function customElements($callback){
return ($callback !== NULL && $callback !== FALSE && $callback !== '');
}
$array = array_filter($array, "customElements");
var_dump($array);
<强>用法:强>
$array = array_filter($array, "customElements");
if (empty($array)) {
echo 'Array is empty!';
}
现在会保留0
,就像你要问的那样。
由Amal Murali提供,你也可以避免在回调中使用函数名并直接声明它:
$array = array_filter($array, function($callback) {
return ($callback !== NULL && $callback !== FALSE && $callback !== '');
});
答案 1 :(得分:1)
我不知道你为什么要这个数组或者产生什么问题代码,但是:
if(empty(array_filter($array))) {
echo 'Array is empty!';
}
明显的检查:
if(empty($array) || (count($array) == 1 && isset($array['']) && empty($array['']))) {
echo 'Array is empty!';
}
答案 2 :(得分:1)
看看这些电话:
$a = Array(null => null);
$x = (implode("", array_keys($a)));
$y = (implode("", array_values($a)));
你可以控制数据&#34;空虚&#34;与他们(键,val或两者)
编辑:这将返回为空:
$a = Array(null => false);
也是,我想这对你来说是一个问题