簡體   English   中英

帶有if語句的奇怪行為

[英]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 == 0true 如果我正確理解了您的意圖,可以使用!"'True','False'"來解決它,或者使用通常應使用的嚴格等於===來解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM