我在php数据库类中遇到了这段代码:
if( !$this->_Link_ID )
Link_ID
是一个整数。
此代码只是检查Link_ID
是否不是0
?
我从经验中知道,如果变量是布尔型,你可以只测试var
$myBoolean = true;
if ($myBoolean){
// code
}
我没有意识到这可以用于整数。
那么if( !$this->_Link_ID )
如何评估?
答案 0 :(得分:3)
如果整数是整数,则检查整数是否为零。如果它被设置为null并且它是否未设置,它也会评估为真,但在后一种情况下它也会发出警告。如果没有否定,那将是对非零的测试。
有关详细信息,请参阅:converting to boolean:
转换为布尔值时,以下值被视为FALSE:
- 布尔值FALSE本身
- 整数0(零)
- 浮点数0.0(零)
- 空字符串,字符串“0”
- 包含零元素的数组
- 一个零成员变量的对象(仅限PHP 4)
- 特殊类型NULL(包括未设置的变量)
- 从空标签创建的SimpleXML对象
其他每个值都被视为TRUE(包括任何资源)。
答案 1 :(得分:1)
这只是检查非零的愚蠢方式,如果LINK_ID为0或null或false,它将
给出true(请注意'!'),否则如果LINK_iD是任何东西它会给出错误的
LINK_iD = 1,如果(!LINK_ID)//这将给出错误的
LINK_ID = 0 if(!LINK_iD)//这将给出真实的
答案 2 :(得分:1)
if( !$this->_Link_ID )
如果$ this-> _Link_ID的值为0,空字符串或null,将返回true。
如果要显式检查“0”,则应使用三等于(“===”或“!==”)来测试该值。像这样
if($this->_Link_ID === 0)
或
if($this->_Link_ID === false)
如果您只希望它返回true表示false,而不是“0”。
答案 3 :(得分:0)
if (!$this->_Link_ID)
不为0,则 $this->_Link_ID
为真,如果为0则为false。
在PHP中,您可以将任何内容测试为布尔值。布尔值可以表示为0或1,其中0表示false,1表示true。在PHP中,任何非0的都是真的,任何0都是假的。例如:
$string = 'This is a test.'
if ($string) echo 'Evaluated to true!';
将打印'评估为真!'。如果$string
不存在,则不会打印任何内容。
答案 4 :(得分:0)
你应该使用
if (!is_int($var))
,因为
if (!$var)
检查$ var是否为0或false
如果你想检查$var
是否存在,你需要使用它:
if (isset($var))
答案 5 :(得分:0)