检测一个值是否为 null 或 false
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
使用 === 操作符来检测 null 和布尔 false 值。
PHP 宽松的类型系统提供了许多不同的方法来检测一个变量的值。 然而这也造成了很多问题。使用 ==
来检测一个值是否为 null
或 false
,如果该值实际上是一个空字符串或 0
,也会误报为 false
。 isset 是检测一个变量是否有值, 而不是检测该值是否为 null
或 false
,因此在这里使用是不恰当的。
示例
<?php
$x = 0;
$y = null;
// Is $x null?
if($x == null)
print('Oops! $x is 0, not null!');
// Is $y null?
if(is_null($y))
print('Great, but could be faster.');
if($y === null)
print('Perfect!');
// Does the string abc contain the character a?
if(strpos('abc', 'a'))
// GOTCHA! strpos returns 0, indicating it wishes to return the position of the first character.
// But PHP interpretes 0 as false, so we never reach this print statement!
print('Found it!');
//Solution: use !== (the opposite of ===) to see if strpos() returns 0, or boolean false.
if(strpos('abc', 'a') !== false)
print('Found it for real this time!');
?>
陷阱
- 测试一个返回
0
或布尔false
的函数的返回值时,如strpos()
,始终使用===
和!==
,否则你就会碰到问题。
在线练习
{$ activeFileHint $}