如何评估`if(!integer){}?

时间:2011-12-05 09:32:01

标签: php

我在php数据库类中遇到了这段代码:

if( !$this->_Link_ID )

Link_ID是一个整数。

此代码只是检查Link_ID是否不是0

我从经验中知道,如果变量是布尔型,你可以只测试var

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

我没有意识到这可以用于整数。

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

6 个答案:

答案 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)