如何检查关联数组的值是否为空或 null

2022-08-30 14:31:53

在下面的关联数组中

$array = array(
    [0] => 0
    [1] => 1
    [2] => 
    [3] => 2
    [4] => 
)

如何确定给定键是否具有空(或空)值?我用过

if(empty($array[$value])) 

if(isset($array[$value])) && $array[$value] !=='')

使用时,我还得到了第一个数组值,该值为零,似乎没有解决问题。emptyfalseisset


答案 1

为此使用array_key_exists()is_null()。如果密钥存在并且其值远非TRUENULL

差异:

$arr = array('a' => NULL);

var_dump(array_key_exists('a', $arr)); // -->  TRUE
var_dump(isset($arr['a'])); // -->  FALSE

所以你应该检查:

if(array_key_exists($key, $array) && is_null($array[$key])) {
    echo "key exists with a value of NULL";
}

答案 2

看了所有的答案,我不喜欢他们。这不是更简单,更好吗?这就是我正在使用的东西:

  if (in_array(null, $array, true) || in_array('', $array, true)) {
    // There are null (or empty) values.
  }

请注意,将第三个参数设置为 true 意味着严格比较,这意味着 0 不等于 null - 但是,空字符串 ('') 也不等于空字符串 - 这就是为什么我们有两个条件。遗憾的是,in_array中的第一个参数必须是字符串,不能是值数组。