在以下关联数组中
$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)
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中的第一个参数必须是一个字符串,不能是值数组.
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那些在这种情况下只是否定它们的条件.请注意,如果要检查其他值,这可能不是最佳解决方案.