检查空阵列

时间:2013-10-31 18:24:21

标签: php arrays

我的数组看起来像这样

Array ( [] => ) 

对我来说它是空的,我正在寻找一种方法来检查它。

首先想到:

if( empty($array) ){
    echo 'Array is empty!';
}

对于empty-function,我的数组不为空。 “真正的”空数组如下所示:Array()。

第二个想法:

if( $array[''] == '' ){
    echo 'Array is empty!';
}

对于我的空数组,这是正确的,但是对于不包含这样的空键值对的任何其他数组都会抛出错误。

有什么想法吗?

我的数组的Var_dump:

array(1) { [""]=> NULL } 

3 个答案:

答案 0 :(得分:6)

快速解决方法:

$array = array_filter($array);

if (empty($array)) {
   echo 'Array is empty!';
}

array_filter()函数的默认行为将从数组中删除所有等于null0''false

的值

编辑1:

如果您想保留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,就像你要问的那样。

编辑2:

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

也是,我想这对你来说是一个问题