2014-10-28 80 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