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
:)@谢谢你,阿马尔,如果你不介意的话,我会把它添加到我的答案中!