如何检查关联数组是否具有空值或空值

bik*_*y77 23 php arrays

在以下关联数组中

$array = array(
    [0] => 0
    [1] => 1
    [2] => 
    [3] => 2
    [4] => 
)
Run Code Online (Sandbox Code Playgroud)

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

if(empty($array[$value])) 
Run Code Online (Sandbox Code Playgroud)

if(isset($array[$value])) && $array[$value] !=='')
Run Code Online (Sandbox Code Playgroud)

使用时empty我也得到false第一个数组值,该值为零并且 isset似乎没有做到这一点.

hek*_*mgl 29

使用array_key_exists()is_null()为此.TRUE如果密钥存在并且具有远离的值,它将返回NULL

区别:

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

var_dump(array_key_exists('a', $arr)); // -->  TRUE
var_dump(isset($arr['a'])); // -->  FALSE
Run Code Online (Sandbox Code Playgroud)

所以你应该检查:

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

  • 对于空值,`array_key_exists`将返回true,因为密钥确实存在. (2认同)

kli*_*fia 18

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

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

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

  • `if(in_array('',$ _POST)){//包含空值.}` (2认同)

Rol*_*oro 5

PHP 返回值状态:

如果var存在且具有非空的非零值,则返回FALSE.否则返回TRUE.

以下内容被认为是空的:

""(空字符串)

0(0为整数)

0.0(0作为浮点数)

"0"(0作为字符串)

空值

array()(一个空数组)

是$ var; (声明的变量,但没有值)

从你的数组示例中我可以将它作为整数排除0.如果是这样的话就可以解决这个问题:

<?php
    $array = array(0, 1, '', 2, '');

    foreach ($array as $value) {
        echo (empty($value) && 0 !== $value) ? "true\n" : "false\n";
    }
Run Code Online (Sandbox Code Playgroud)

如果你想排除empty那些在这种情况下只是否定它们的条件.请注意,如果要检查其他值,这可能不是最佳解决方案.