2014-10-28 77 views
0

在我的應用程序,也有在運行時如x,1個產生2,1等 我需要比較值,這些:比較在PHP ==和===運營商

,因爲我們知道,

 x == 1 is false 
     '1x'== 1 is true 
     '1' == 1 is true 

對於我的申請,第一,第二種情況需要是假的,第三種情況需要是真的。如果我使用===,

 x === 1 is false 
     '1x'=== 1 is false 
     1' === 1 is false 

所以這兩個比較我不能使用。

我認爲轉換爲字符串,然後使用strcmp比較將是我擁有的最佳選擇。請分享你的想法。任何答覆表示讚賞。

+0

爲什麼你不只是比較' '1' ===「1'',即圍繞'1'用單引號? – danmullen 2014-10-28 11:48:57

+0

==用於比較值,如果它們相等並且不比===嚴格。 – Robin 2014-10-28 11:52:58

+0

我不能這樣做,因爲所有這些都是在運行時生成的,並且不能控制生成的值。你的意思是追加''所有和比較?如果是這樣的話,它將所有東西都比作字符串。那麼更好的方法還是使用strcmp? – AVC 2014-10-28 11:53:43

回答

4

strcmp將適用於此。但你應該知道它的返回值。

Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.

,或者您也可以使用Regex

+0

謝謝,即使我有相同的意見。現在還會等待一些其他視圖 – AVC 2014-10-28 11:58:26

+0

+1,我正在使用strcmp來達到此目的。 – 2014-10-28 11:59:04

+0

嗯..它很複雜。 – 2014-10-28 11:59:22

3

二者必選其一strcmpstrcasecmp

返回< 0如果str1小於str2的;如果str1大於str2,則爲0;如果相等,則爲0。 Reference

+0

@AVC對於不區分大小寫的搜索,請使用回答中提及的'strcasecmp'。 – 2014-10-28 12:06:13

0

請嘗試以下方法:

if(strlen($x) == 1) { 
    if ((intval($x) === 1)) { 
     echo "Equals"; 
    } 
    else 
    { 
     echo "Not Equals"; 
    } 
} 
    }else 
    { 
     echo "Not Equals"; 
    } 
+0

您可以在$ x中輸入任何值並檢查它是否正常工作。 – Robin 2014-10-28 12:17:42

+0

x = 0失敗 – AVC 2014-10-28 12:21:49

+0

對不起人,但現在它工作。 – Robin 2014-10-28 12:30:07