[英]Weird behaviour with if statement
以下似乎有效,但我真的不認為應該這樣做:
if ("'True','False'" == 0)
{
echo 'Hello, World.';
}
它會從字符串中刪除最后一個False
嗎?如果是,為什么呢?如何停止呢?
這是由於鍵入不正確。 當您將字符串與數字進行比較時,PHP必須將一個類型轉換為另一個類型。 在這種情況下,將字符串轉換為整數后,其值將為0,且條件為True。
與數字進行比較時,任何字符串的計算結果均為0(除非它是字符串數字,例如“ 5”或“ 4string”)。 這就是為什么它將始終計算為0的原因。
請參閱類型比較表
真正發生的是PHP嘗試進行隱式類型轉換,出於某種原因,它決定將字符串轉換為整數時看起來像0。您可以通過以下方法向自己證明:
echo ((int) "'True','False'");
如果要進行類型檢查的比較,則應使用三等號( ===
):
if("'True','False'" === 0)
...這肯定會為假。
沒有; 它將字符串"'True','False'"
轉換為數字 -該數字為0
。 0 == 0
為true
。 如果我正確理解了您的意圖,可以使用!"'True','False'"
來解決它,或者使用通常應使用的嚴格等於===
來解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.