Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中,是否有方法检查数组中的所有元素是否为空_Php_Arrays - Fatal编程技术网

在php中,是否有方法检查数组中的所有元素是否为空

在php中,是否有方法检查数组中的所有元素是否为空,php,arrays,Php,Arrays,在PHP中,是否有方法检查数组中的所有元素是否为null 例如,我有一个数组数组(null,null,null,null)-有办法检查这个场景吗 我正在寻找一种更好的方法,而不仅仅是在整个数组中循环并检查每个元素。您可以使用 像这样: $nulls = array(null,null,null,null,null); if(count(array_filter($nulls)) == 0){ echo "all null (or false)"; } 不知道您在这个数组中期望得到什么,但这

在PHP中,是否有方法检查数组中的所有元素是否为null

例如,我有一个数组
数组(null,null,null,null)
-有办法检查这个场景吗

我正在寻找一种更好的方法,而不仅仅是在整个数组中循环并检查每个元素。

您可以使用

像这样:

$nulls = array(null,null,null,null,null);
if(count(array_filter($nulls)) == 0){
  echo "all null (or false)";
}
不知道您在这个数组中期望得到什么,但这会将false与null合并起来…

您可以使用

像这样:

$nulls = array(null,null,null,null,null);
if(count(array_filter($nulls)) == 0){
  echo "all null (or false)";
}

不知道您在这个数组中期望得到什么,但这会将false与null集在一起…

另一种简单的方法是使用
max()
函数

max(array( 3, 4, null, null  ) )      # is 4
max(array( null, null, null, null)    # is null

因此,您可以发出一个简单的
if(is_null(max($array)){…}
调用。

另一个简单的方法是使用
max()
函数

max(array( 3, 4, null, null  ) )      # is 4
max(array( null, null, null, null)    # is null
因此,您可以发出一个简单的
if(is_null(max($array)){…}
调用。

可以工作:

function checkIsset($val) {
    return isset($val);
}
$arr = array(null, null, null, ..., null);
$filteredArr = array_filter($arr, 'checkIsset');
if (count($filteredArr)) {
  //not all null
} else {
  //all null
}
或者
if(empty($filteredar))
如果您想要相反的结果。

可以:

function checkIsset($val) {
    return isset($val);
}
$arr = array(null, null, null, ..., null);
$filteredArr = array_filter($arr, 'checkIsset');
if (count($filteredArr)) {
  //not all null
} else {
  //all null
}
或者
if(empty($filteredar))
如果您想要相反的结果。

尝试以下方法:

$nulls = array(null,null,null,null,null,null,null,null);
var_dump(array_unique($nulls) === array(null)); // prints true
试试这个:

$nulls = array(null,null,null,null,null,null,null,null);
var_dump(array_unique($nulls) === array(null)); // prints true
if($arr&&count(array\u filter($arr,'is\u null'))==count($arr)){
echo“数组均为空\n”;
}
只有当
$arr
的所有元素都为空时,才会调用echo。

如果($arr&&count(array\u filter($arr,'is\u null'))==count($arr)){
echo“数组均为空\n”;
}


只有当
$arr
的所有元素都为空时,才会调用echo。

当然,使用
foreach
循环它并测试每个元素。我的意思是使用更好的方法。就像在一些内置函数中一样,
array\u unique($array)==array(null)
可能。编辑删除的引号如何在将数据插入数组之前检查数据是否为空?如果为空,则不会将其添加到数组中。如果数组没有内容,那么它就没有用处。使用
array_unique()
的任何解决方案在最佳情况下都是O(n),而@halfer建议的简单循环(和中断)仅在最坏情况下才是O(n)。这意味着,如果您有一百万个项目,并且第二个项目不为空,那么使用
array_unique()
您仍然会检查剩余的99998个项目(更不用说可能会占用大量内存),即使您已经有了答案。不要这样做。当然,用
foreach
循环它并测试每个元素。我的意思是用更好的方法来做。就像在一些内置函数中一样,
array\u unique($array)==array(null)
可能。编辑删除的引号如何在将数据插入数组之前检查数据是否为空?如果为空,则不会将其添加到数组中。如果数组没有内容,那么它就没有用处。使用
array_unique()
的任何解决方案在最佳情况下都是O(n),而@halfer建议的简单循环(和中断)仅在最坏情况下才是O(n)。这意味着,如果您有一百万个项目,并且第二个项目不为空,那么使用
array_unique()
您仍然会检查剩余的99998个项目(更不用说可能会占用大量内存),即使您已经有了答案。不要这样做。如果您使用
array(0',null,array()),我想您的意思是
count($removenulls)==0
这将失败
array\u filter
只是检查错误的值,而不是
null
值。在我发表评论之前,我的答案是正确的,然后我注意到你的答案是相似的。@JKirchartz你考虑过测试一些尝试吗?我想你的意思是
count($removenulls)==0
如果你使用
array(0',null,array()这将失败
array\u filter
只是检查错误的值,而不是
null
值。在我发表评论之前,我的答案是正确的,然后我注意到你的答案是相似的。@JKirchartz你考虑过测试一些尝试吗?@RepWhoringPeeHaa,没有。更多的是关于它如何工作的结构。你能提供工作代码或添加它是伪代码的事实吗?@RepWhoringPeeHaa,什么不工作?你试过了吗?我还没有试过(然后我也没有试着回答),但我想你会在
isset
as callback上得到一个错误。@RepWhoringPeeHaa,我刚检查过,你是对的。修好了。@RepWhoringPeeHaa,没有。更多的是关于它如何工作的结构。你能提供工作代码或添加它是伪代码的事实吗?@RepWhoringPeeHaa,什么不工作?你试过了吗?我还没有试过(然后我也没有试着回答),但我想你会在
isset
as callback上得到一个错误。@RepWhoringPeeHaa,我刚检查过,你是对的。修复了它。如果数组具有混合类型,则此操作不起作用:
print max(['a',new StdClass(),null])
导致
PHP可恢复致命错误:类StdClass的对象无法转换为字符串。
如果数组具有混合类型,则此操作不起作用:
print max(['a',new StdClass(),null])
导致
PHP可恢复致命错误:类stdClass的对象无法转换为字符串