2012-06-13 30 views
4

我知道!=是“不等于”,但是当你有这个是什么意思:

if(!$something) 

我的第一个猜测是什么做的异常,而是围绕谷歌一看没有任何回报。

那么这是做什么的?

回答

10

无论是在变量是converted to a Boolean(课程的变量本身保持不变),然后执行NOT操作(!)为d一个关于结果布尔值。转换将发生,因为!Logical Operator,只能在布尔值上工作。

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

  • 布尔值FALSE
  • 整数0(零)
  • 浮子0.0(零)
  • 的空字符串和字符串“0”
  • 具有零元素的数组
  • 对象w第i个零的成员变量(PHP 4只)
  • 特殊类型NULL(包括尚未设定的变量)从空标签
  • 创建
  • 的SimpleXML对象

提示:如果没有预期的变量为布尔,你可能想要使用更具体的东西,如isset($variable)empty($variable),$variable === ''等,这取决于你想检查什么。详细信息请查阅手册。

+2

+1中列出值为错误的值 – Fabian

1

它只是意味着“如果不是东西”。

if (!false) { 
    this_happens_because_not_false_is_true(); 
} 
2

检查$ something是否是虚假的。

3
if (!$something) { 

if ($something == false) { 
+0

False。例如'!“0”'是真的,但'“0”=== false'不是。 – Artefact2

+0

@Jeroen不,实际上'=='是这里发生的事情。该变量将用'!'转换为布尔值。所以严格的平等不会返回相同的结果。 – kapa

6

的equivelent这是一样的:

if((bool)$something != true) { 

参见:http://www.php.net/manual/en/control-structures.if.php

+0

这是最好的答案,其他忘记提及测试是在$ something上检测它,这是非常重要的取决于什么是$东西。我建议仔细阅读有关将文件转换为布尔值的文档,在php – PEM

0

检查$something是否为假。

+1

并非如此。那会是'$ variable === false'。 – kapa

0

它检查是否!$something是假的,或者你可以把它理解像(如果不是$的东西),然后{//这将执行}如果$的东西存在,则这将不会进入,如果

1

if(!$variable)if($variable == false)相同,因此它会检查$ variable是否为假
查看@bažmegakapaanswer以查看哪些值被视为错误。

0

它将变量转换为变量的boolean等效变量。这可以在少数情况下给出:

<?php 

    // Case 1: $variable is boolean 
    $variable = true; 
    $variable = !$variable; // Changes to false; 
    var_dump($variable); // bool(false) 

    // Case 2a: $variable is a positive integer 
    $variable = 5; 
    $variable = !$variable; // Changes to false; 
    var_dump($variable); // bool(false) 

    // Case 2b: $variable is an integer other than 0 
    $variable = 0; 
    $variable = !$variable; // Changes to false; 
    var_dump($variable); // bool(true) 

    // Case 2c: $variable is a negative integer 
    $variable = -5; 
    $variable = !$variable; // Changes to false; 
    var_dump($variable); // bool(false) 

    // Case 3a: $variable is string 
    $variable = "Hello"; 
    $variable = !$variable; // Changes to false; 
    var_dump($variable); // bool(false) 

    // Case 3b: $variable is empty string 
    $variable = ""; 
    $variable = !$variable; // Changes to false; 
    var_dump($variable); // bool(true) 
?> 

总之,它使empty()功能的对面! :)

希望这有助于! :)

+0

好吧,不完全与'empty()'相反。 – kapa

+0

@bažmegakapa有一些连接权限? –

+0

当然有。我只是检查了我在答案中发布的手动链接,然后查看了'empty()'的手册,并且存在一些差异(没有尝试过自己)。 – kapa

-2
if($somethin == ""){ 
} 

Or 

if($somethin != ""){ 
}