我碰到这个代码的PHP数据库类传来:如何评估“if(!integer){}”?
Link_ID
是一个整数。
那么这个代码只是检查Link_ID
是不是0
?
经验告诉我,如果一个变量是布尔类型,你可以测试VAR像
$myBoolean = true;
if ($myBoolean){
// code
}
我没有意识到这可以为整数来完成。
那么if(!$this->_Link_ID)
如何评估?
我碰到这个代码的PHP数据库类传来:如何评估“if(!integer){}”?
Link_ID
是一个整数。
那么这个代码只是检查Link_ID
是不是0
?
经验告诉我,如果一个变量是布尔类型,你可以测试VAR像
$myBoolean = true;
if ($myBoolean){
// code
}
我没有意识到这可以为整数来完成。
那么if(!$this->_Link_ID)
如何评估?
它检查整数是否为零。如果它被设置为null并且未设置,它也评估为真值,但在后一种情况下,它也会发出警告。如果没有否定,那将是对非零的测试。
更多细节参见:converting to boolean:
当转换为布尔型,下面的值被认为是FALSE:
- 布尔值FALSE
- 整数0(零)
- 浮点数0.0(零)
- 空字符串,字符串“0”
- 用零个元素
- 零个成员变量的对象的阵列(PHP 4只)
- 特殊类型NULL(包括尚未设定的变量)从空标签创建
- 的SimpleXML对象
每隔值被视为TRUE(包括任何资源)。如果
$this->_Link_ID
不为0,而如果其为0。在PHP
if (!$this->_Link_ID)
将是真实的,你可以测试任何东西作为一个布尔值。布尔值可以表示为0或1,其中0为假,1为真。在PHP中,任何不是0的东西都是真的,任何0的东西都是假的。例如:
$string = 'This is a test.'
if ($string) echo 'Evaluated to true!';
将打印'评估为真!'。如果$string
不存在,它将不会打印任何内容。
你应该使用
if (!is_int($var))
因为
if (!$var)
检查,如果是$ var不为0或假
,如果你想检查是否$var
存在,你需要使用这样的:
if (isset($var))
这简直是检查非零的愚蠢方式,如果LINK_ID为0或空或假,它会
给真正的(请注意 '!'),否则如果LINK_iD是什么东西,它会给假
LINK_I d = 1,如果(!LINK_ID)//这会得到错误的
LINK_ID = 0,如果(!LINK_iD)//这会得到真正的
将返回如果该值为真$ this - > _ Link_ID为0,为空字符串或null。
如果您想明确检查“0”,那么您应该使用三等分(“===”或“!==”)来测试该值。像这样
if($this->_Link_ID === 0)
或
if($this->_Link_ID === false)
如果你只希望它的虚假返回true,但不为 “0”。
它真的很容易出错!因为它会给倒转的结果更好的使用'isset()'如果你想检查是否设置,或使用==看看是否等于0 – Qchmqs