2011-12-05 49 views
0

我碰到这个代码的PHP数据库类传来:如何评估“if(!integer){}”?

​​

Link_ID是一个整数。

那么这个代码只是检查Link_ID是不是0

经验告诉我,如果一个变量是布尔类型,你可以测试VAR像

$myBoolean = true; 
if ($myBoolean){ 
    // code 
} 

我没有意识到这可以为整数来完成。

那么if(!$this->_Link_ID)如何评估?

回答

3

它检查整数是否为零。如果它被设置为null并且未设置,它也评估为真值,但在后一种情况下,它也会发出警告。如果没有否定,那将是对非零的测试。

更多细节参见:converting to boolean

当转换为布尔型,下面的值被认为是FALSE:

  • 布尔值FALSE
  • 整数0(零)
  • 浮点数0.0(零)
  • 空字符串,字符串“0”
  • 用零个元素
  • 零个成员变量的对象的阵列(PHP 4只)
  • 特殊类型NULL(包括尚未设定的变量)从空标签创建
  • 的SimpleXML对象

每隔值被视为TRUE(包括任何资源)。如果$this->_Link_ID不为0,而如果其为0。

在PHP

0

if (!$this->_Link_ID)将是真实的,你可以测试任何东西作为一个布尔值。布尔值可以表示为0或1,其中0为假,1为真。在PHP中,任何不是0的东西都是真的,任何0的东西都是假的。例如:

$string = 'This is a test.' 

if ($string) echo 'Evaluated to true!'; 

将打印'评估为真!'。如果$string不存在,它将不会打印任何内容。

0

你应该使用

if (!is_int($var)) 

因为

if (!$var) 

检查,如果是$ var不为0或假

,如果你想检查是否$var存在,你需要使用这样的:

if (isset($var)) 
1

这简直是检查非零的愚蠢方式,如果LINK_ID为0或空或假,它会

给真正的(请注意 '!'),否则如果LINK_iD是什么东西,它会给假

LINK_I d = 1,如果(!LINK_ID)//这会得到错误的

LINK_ID = 0,如果(!LINK_iD)//这会得到真正的

+0

它真的很容易出错!因为它会给倒转的结果更好的使用'isset()'如果你想检查是否设置,或使用==看看是否等于0 – Qchmqs

1
​​

将返回如果该值为真$ this - > _ Link_ID为0,为空字符串或null。

如果您想明确检查“0”,那么您应该使用三等分(“===”或“!==”)来测试该值。像这样

if($this->_Link_ID === 0) 

if($this->_Link_ID === false) 

如果你只希望它的虚假返回true,但不为 “0”。