2012-09-30 72 views
-1

會不會有任何理由if ($str == "")if (empty($str))不會產生相同的輸出?

+0

它們根本不產生輸出。他們是條件。 – think123

+0

@ think123 - 它們會產生輸出,布爾輸出。 – TCS

+0

是的,但它們被放在if語句中,所以不會有任何直接的「輸出」。我可以理解你來自哪裏。 – think123

回答

4

$str == ""返回TRUE爲

  • $str = "";
  • $str = false;
  • $str = NULL;
  • $str = 0;
  • $str = 0.0;

$str == ""將返回FALSE爲

  • $str = "0";
  • $str = array();

注:這也將返回TRUE一個未定義的變量,但它是一個警告。

在另一方面empty($str)將是TRUE以上所有情況下(包括未定義的變量),沒有警告。

至於這種差異的原因,這是因爲功能empty旨在測試一個emtpy變量(任何類型,例如一個數組或數字*)不僅是一個空字符串。

*:現在您可能已經開始使用PHP存儲在字符串中的數字了,它只會根據需要轉換該值,例如echo "1" + 2給出3。這就是爲什麼empty($str)$str = "0"返回TRUE,不是因爲它是一個空字符串(不是),而是因爲它是一個空數字。

爲了測試字符串是否爲空,我強烈推薦使用$str === ''strlen($str) === 0

2

$str = "0"; 例如。請參閱this罰款文件。

1

empty相同== false(且無需增加對於不存在變量的誤差)。如果你指的是Type Comparison Tables,你會看到"0"array()將比較不同。

2

$str == ""將除外的$ str中的下列值的所有empty($str)爲真:

  • "0"(0作爲字符串)
  • array()(空數組)
+3

'==「」'對於其他許多情況也是如此! – deceze

+0

拼寫更多:這個答案是錯誤的!試着證明第一句話。 – deceze

+0

這仍然是錯誤的。例如'0 ==「」''是'true'。 – deceze

相關問題