检查数组是否有一个或多个空值


check if an array have one or more empty values

我有数组$var,如果数组中的一个或多个元素为空(我的意思是,字符串是"),我想返回FALSE。

我认为array_filter()是更好的方式,但我不知道如何以这种方式过滤它。

我该怎么做?

function emptyElementExists()

function emptyElementExists($arr) {
  return array_search("", $arr) !== false;
  }

例子:

$var = array( "text1", "", "text3" );
var_dump( emptyElementExists($var) );
输出:

bool(真)

参考

    函数的作用是
if (array_search('', $var)!==false) return FALSE;

如果你想有一个函数来检查数组中某项是否为假,你可以自己写一个函数来做:

  • 遍历数组
  • 每个周期检查当前项目值是否为"
  • 如果值不是",则运行下一个周期
  • 如果值是"返回False打破循环

array_filter接受一个数组和一个函数,然后遍历数组,并在指定的函数中发送每一项。如果函数返回true,则项目保留在数组中,如果函数返回false,则项目从数组中取出。

你看到区别了,对吧?

如果您真的想检查是否存在一个或多个空字符串,这很简单。你可以,

in_array('', $var, true);

如果空字符串('')至少存在于任何一个数组值中,则返回true,否则返回false。你也可以参考这个类似的问题,如何检查一个数组是否有值=== null没有循环?

或者像@Ancide:

$var = array("lorem", "ipsum", "dolor");
$emptyVar = array("lorem", "", "dolor");
function has_empty($array) {
    foreach ($array as $value) {
        if ($value == "")
            return true;
    }
    return false;
}
echo '$var has ' . (has_empty($var) ? 'empty values' : 'no empty values');
echo '<br>';
echo '$emptyVar has ' . (has_empty($emptyVar) ? 'empty values' : 'no empty values');

编辑:

一开始我不确定array_search()是否在第一次出现时停止。在验证PHP的源代码后,似乎array_search()方法应该更快(更短)。因此,我认为@Wh1T3h4Ck5的版本更可取。