2012-06-13 56 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 != ""){ 
}