比较一个字符串,和一个只有数字的字符串

时间:2015-07-08 09:56:17

标签: php

我是php的新手并且一直试图让这种比较无效:

我有一个可能包含

的变量'productCode'
  • 案例1:最初是'选择'的值。
  • 案例2:稍后变量可以采用字符串(仅包含数字),如102,103

我需要知道变量productCode中的内容是什么?它仍然是“选择”或“102”(如只有数字的字符串)

我应该使用什么比较运算符?

它具有“选择”的价值吗? 它应该是

  • 如果productCode设置为“选择”和
  • ,则为true
  • false,如果它是其他字符串(只有102,103中的数字..)

我试过

if(strcmp($productCode,'Choose')){

}//tried double quotes also

if(($productCode=='Choose')){

}//tried double quotes also

if(($productCode==='Choose')){

}//tried double quotes also

我偶然发现了这个...... '102'与'Choose'相比也传递了if语句......

有人可以用正确的方法检查这个混合案例吗?

编辑1: 相关代码(在合并了Rizier123的=== 0建议之后:

 $productCode11=$_POST['productCode11'];
 $productCode12=$_POST['productCode12'];
 $productCode13=$_POST['productCode13'];

if(strcmp($productCode11,'Choose') === 0){
    //testing the values if they actually hold what I am expecting
    echo '<script type="text/javascript">alert(" '.$productCode11.' ");</script>';
    echo '<script type="text/javascript">alert(" '.$productCode12.' ");</script>';
        //testing if the 'if' check passes
    echo '<script type="text/javascript">alert("same");</script>';
        $productCode11Error="Fill This";
        $incomplete=true;
    }

if(strcmp($productCode12,'Choose') === 0)){
        $productCode12Error="Fill This";
        $incomplete=true;
    }

if(strcmp($productCode13,'Choose') === 0){
        $productCode13Error="Fill This";
        $incomplete=true;
    }

编辑2 我做了一些测试,这些是我得到的奇怪结果:

$test = strcmp($productCode11, 'Choose');
$test2 = strcmp($productCode11, $productCode12);

if both are 'Choose' I get 1 and it is incremented by 1 for every submission (2,3,4,5...)
if both are numbers and same, I get 0
if LHS is number and RHS is 'Choose', I get -1
if LHS and RHS are 'Choose' I get 1,3,4..
if LHS is 'Choose' and RHS is number I get 1
if both are numbers, and LHS > RHS I get 1
if both are numbers and RHS > LHS I get -3

2 个答案:

答案 0 :(得分:1)

你的第一次尝试正常运作。但是你必须知道,strcmp()返回0,当字符串相等时,所以只需添加一个比较,例如。

if(strcmp($productCode, 'Choose') === 0) {
                                //^^^^^ See here

}

因此,如果$productCode等于"Choose",则评估为真。

<强>旁注:

答案 1 :(得分:0)

经过长时间的试验和错误,我怀疑从$ POST返回的变量可能有一些额外的字符。为了解决这个问题,我尝试使用trim()函数。令人惊讶的是,一切都开始工作'预期'。

(我坚持Rizier123的=== 0建议)