在PHP腳本 - 這是什麼if語句這樣的支票?
<?php if($variable){ // code to be executed } ?>
我已經看到了它在腳本中使用了幾次,現在我真的想知道這是什麼「查找」。它不會錯過任何東西;它只是一個在if語句中的簡單變量......我無法在任何地方找到任何關於此的結果,所以很明顯,我會看起來很愚蠢。
在PHP腳本 - 這是什麼if語句這樣的支票?
<?php if($variable){ // code to be executed } ?>
我已經看到了它在腳本中使用了幾次,現在我真的想知道這是什麼「查找」。它不會錯過任何東西;它只是一個在if語句中的簡單變量......我無法在任何地方找到任何關於此的結果,所以很明顯,我會看起來很愚蠢。
將構建if ($variable)
測試,看看$variable
評估任何「truthy」值。它可以是布爾型TRUE
,也可以是非空的非空值或非零數字。看看布爾評估名單in the PHP docs.
從PHP文件:但是
var_dump((bool) ""); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
注意if ($variable)
是不恰當的使用測試時,如果一個變量或數組鍵被初始化。如果它的變量或數組鍵尚不存在,這將導致E_NOTICE Undefined variable $variable
。
除了提供知識,我+1你添加單詞「truthy」以我的詞彙。 – user
檢查變量時,這是否被認爲是一種很好的做法? –
@BasilMusa不,不應該用它來檢查變量是否已經初始化。如果變量尚未初始化,它會導致'E_NOTICE未定義變量$ var'。你必須使用'isset($ var)'來知道它們是否已經初始化,然後檢查它的布爾值。 –
如果轉換$variable
到布爾值,並根據該轉換的結果的行爲。
見boolean文檔以獲取更多信息。
要顯式地將值轉換爲布爾值,請使用(bool)或(boolean)強制轉換。但是,在大多數情況下,轉換是不必要的,因爲如果運算符(函數或控制結構需要布爾參數),則值將自動轉換。
它完全取決於您要檢查的對象的值類型。在PHP中,每個對象類型都有一個特定的值,如果檢查時返回false。這些解釋可以在這裏找到:http://php.net/manual/en/language.types.boolean.php計算結果爲假的有些值是
浮動:0.0
INT:0
布爾:假
字符串: ''
陣列:[](空)
對象:對象具有0屬性/空
NULL
它與大多數其他語言有點不同,但一旦你習慣了它,它可以非常方便。這就是爲什麼你會看到大量的報表,如
$result = mysqli_multi_query($query) or die('Could not execute query');
在PHP函數只需要返回結果爲假的東西,像這樣的工作值類型。 PHP中的OR運算符不會評估第二個參數如果第一個參數爲true(因爲不管第二個參數的輸出如何,or語句仍然會通過),並且這樣的行將嘗試調用查詢並將結果賦值給$ result 。如果查詢失敗並且該函數返回一個假值,則線程將被終止並顯示「無法執行查詢」。
-1 *「計算結果爲假的有些值是...對象:對象有0的屬性/空」 * - 這是假的。除了空的'SimpleXMLElement's(這是一種非常荒謬的特殊情況),PHP中的所有其他對象都是真的。試試'var_dump((bool)(new stdclass));'你會得到'bool(true)'。 –
任何這些都被認爲是錯誤的(使得//code to be executed would
不運行)
所有其他的值應該是真實的。更多信息請點擊PHP Booleans manual。
它檢查$variable
是否評估爲true
。有幾個正常值評估爲true
,請參閱PHP type comparison tables。
if ()
可以包含任何表達,最終計算結果爲true
或false
。
if (true) // very direct
if (true == true) // true == true evaluates to true
if (true || true && true) // boils down to true
$foo = true;
if ($foo) // direct true
if ($foo == true) // you get the idea...
下面的列表說明了被認爲評估對false
在PHP中:
所有其它值都被認爲是TRUE(包括任何資源創建
來源:http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting
在你的問題中,變量是if()
語句中進行評估。如果該變量未設置,則根據上面的列表將其評估爲false。如果設置,或有一個值,它的值爲true,因此執行if()
分支中的代碼。
如果函數運行成功(true)還是一個變量存在(真)boolean
if語句將繼續。否則,它將被忽略
-1;這整個答案是無稽之談。函數成功運行並返回一個錯誤的值,或者一個變量存在並且是假的是完全可能的。 –
嘗試尋找這個老擴展「php truth table」讓你的頭所有的各種坑窪等着爆你的輪胎周圍。在開始時,儘可能使用任何比較運算符來分隔代碼。嘗試和測試being identical而不是等於。
如果變量爲真/存在{}將被執行之間的代碼。 – Eddie