2012-09-08 71 views
1

變量前面的exclamaton標記是什麼意思?它在這段代碼中如何使用?

編輯:從迄今爲止的答案我懷疑我也應該提到,這段代碼是在一個函數中,其中一個參數是$ mytype ....這是檢查$ mytype是否通過檢查的方式嗎? - 感謝所有響應者。

$myclass = null; 

    if ($mytype == null && ($PAGE->pagetype <> 'site-index' && $PAGE->pagetype <>'admin-index')) { 
     return $myclass; 
    } 
    elseif ($mytype == null && ($PAGE->pagetype == 'site-index' || $PAGE->pagetype =='admin-index')) { 
     $myclass = ' active_tree_node'; 
     return $myclass; 
    } 
    elseif (!$mytype == null && ($PAGE->pagetype == 'site-index' || $PAGE->pagetype =='admin-index')) { 
     return $myclass; 
    }` 

回答

2

!變量阻卻之前,它的價值

這種說法其實是一樣的!$mytype因爲FALSE == NULL

!$mytype == null 

語句將返回TRUE如果$mytype包含下列操作之一:

  • TRUE
  • 除零之外的數字
  • 非空字符串
4

PHP中的感嘆號表示not

if($var) 

意味着如果$var不爲空或零或假,而

if(!$var) 

意味着如果$var爲空或零或假。

把它看成是沿着線查詢:

select someColumn where id = 3 

select someColumn where id != 3 
3

!否定任何的它放在前面的值。因此,您發佈的代碼會檢查$mytype的否定值是否爲==null

return true; //true 
return !true; //false 

return false; //false 
return !false; //true 

return (4 > 10); //false 
return !(4 < 10); //true 

return true == false; //false 
return !true == false; //true 

return true XOR true; //false 
return !true XOR true; //true 
return !true XOR true; //false 
1
elseif (!$mytype == null && ($PAGE->pagetype == 'site-index' || $PAGE->pagetype =='admin-index')) { 
    return $myclass; 
} 

上面!$mytype == null是錯了。 !$mytype表示如果變量的計算結果爲false或爲空,則將執行該條件。

然而額外== null是不必要的,並且基本上是說與If條件用於檢查變量if (false == null)if (null == null)

+0

這正是我的想法!我張貼是因爲我想知道是否有其他原因。我會給它幾天的時間來看看它是否會出現一些極端泄露的PHP怪癖或我的主要誤解。 – DogBot

0

!$variableNul升或不

例如

if(!$var) 

意味着如果$var一片空白。

+0

嗯..在我看來,'$ mytype == null'和'!$ mytype == null'是一樣的......我沒有提到這個代碼是在一個函數中。一種檢查'$ mytype'是否通過的方法? – DogBot