Php 检查是否存在空数组

Php 检查是否存在空数组,php,arrays,Php,Arrays,我的数组看起来像这样 Array ( [] => ) 对我来说它是空的,我正在寻找一种方法来检查它 第一个想法: if( empty($array) ){ echo 'Array is empty!'; } 对于空函数,我的数组不是空的。“实”空数组如下所示:array() 第二个想法: if( $array[''] == '' ){ echo 'Array is empty!'; } 对于我的空数组,这是正确的,但对于不包含此类空键值对的任何其他数组,都会抛出一个

我的数组看起来像这样

Array ( [] => ) 
对我来说它是空的,我正在寻找一种方法来检查它

第一个想法:

if( empty($array) ){
    echo 'Array is empty!';
}
对于空函数,我的数组不是空的。“实”空数组如下所示:array()

第二个想法:

if( $array[''] == '' ){
    echo 'Array is empty!';
}
对于我的空数组,这是正确的,但对于不包含此类空键值对的任何其他数组,都会抛出一个错误

有什么想法吗

我的阵列的Var_转储:

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

快速解决方案:

$array = array_filter($array);

if (empty($array)) {
   echo 'Array is empty!';
}
函数的默认行为将从数组中删除所有值,这些值等于
null
0
'
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: 正如所提供的,您还可以避免在回调中使用函数名,并直接声明它:

$array = array_filter($array, function($callback) { 
   return ($callback !== NULL && $callback !== FALSE && $callback !== ''); 
});

快速解决方案:

$array = array_filter($array);

if (empty($array)) {
   echo 'Array is empty!';
}
函数的默认行为将从数组中删除所有值,这些值等于
null
0
'
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: 正如所提供的,您还可以避免在回调中使用函数名,并直接声明它:

$array = array_filter($array, function($callback) { 
   return ($callback !== NULL && $callback !== FALSE && $callback !== ''); 
});

我不知道您为什么想要那个数组,或者是什么问题代码生成了它,但是:

if(empty(array_filter($array))) {
    echo 'Array is empty!';
}
明显的检查:

if(empty($array) || (count($array) == 1 && isset($array['']) && empty($array['']))) {
    echo 'Array is empty!';
}

我不知道您为什么想要那个数组,或者是什么问题代码生成了它,但是:

if(empty(array_filter($array))) {
    echo 'Array is empty!';
}
明显的检查:

if(empty($array) || (count($array) == 1 && isset($array['']) && empty($array['']))) {
    echo 'Array is empty!';
}

看看这些电话:

 $a = Array(null => null);
 $x = (implode("", array_keys($a)));
 $y = (implode("", array_values($a)));
您可以使用它们(键、VAL或两者)控制数据“清空”

编辑:这将返回为空:

$a = Array(null => false);

我想这也是你的一个问题

看看这些电话:

 $a = Array(null => null);
 $x = (implode("", array_keys($a)));
 $y = (implode("", array_values($a)));
您可以使用它们(键、VAL或两者)控制数据“清空”

编辑:这将返回为空:

$a = Array(null => false);

我想这也是你的一个问题

你能发布一个实际数组的
var\u dump()
吗?你的数组不是空的。它包含一个元素。该元素(及其密钥)恰好是空白字符串(或null)。如果您希望该数组被认为是空的,则应该首先修剪这些空条目然后检查.WraveDoIP($数组);在你的代码中:它会告诉你你错了:你的数组看起来像数组([]=>NULL),我知道我的数组不是真的空的。我只是不知道如何检查。你能发布一个实际数组的
var\u dump()
吗?你的数组不是空的。它包含一个元素。该元素(及其密钥)恰好是空白字符串(或null)。如果您希望该数组被认为是空的,则应该首先修剪这些空条目然后检查.WraveDoIP($数组);在你的代码中:它会告诉你你错了:你的数组看起来像数组([]=>NULL),我知道我的数组不是真的空的。我只是不知道如何检查。@eevaa:您可以使用带有
array\u filter()
的自定义回调。查看此答案或查看另一个示例:)@AmalMurali是的,谢谢!我知道。不过,在多种情况下,使用
函数
可能更容易。@eevaa更新了我的答案!对于未来的用户,请注意:您还可以将匿名函数用于自定义回调:
$array=array\u filter($array,function($elem){return($callback!==NULL&&$callback!==FALSE&&$callback!=='';})
。好答案
+1
:)@谢谢你,阿马尔,如果你不介意的话,我会把它添加到我的答案中@eevaa:您可以使用带有
array\u filter()
的自定义回调。查看此答案或查看另一个示例:)@AmalMurali是的,谢谢!我知道。不过,在多种情况下,使用
函数
可能更容易。@eevaa更新了我的答案!对于未来的用户,请注意:您还可以将匿名函数用于自定义回调:
$array=array\u filter($array,function($elem){return($callback!==NULL&&$callback!==FALSE&&$callback!=='';})
。好答案
+1
:)@谢谢你,阿马尔,如果你不介意的话,我会把它添加到我的答案中!