PHP如果条件与字符串

时间:2011-03-02 22:41:12

标签: php string if-statement

我正在尝试写一个简单的if条件。

function genderMatch($consumerid1, $consumerid2)
    {
    $gender1=getGender($consumerid1);
    $gender2=getGender($consumerid2);
    echo $gender1;
    echo $gender2;
    if($gender1=$gender2)   
      echo 1;
      return 1;
    else
       echo 0;
       return 0;
}

getGender函数的输出是M或F.但是,无论我做什么,gender1和gender2都返回相同。例如,我得到了这个输出:MF1

我目前不知所措,有什么建议吗?

6 个答案:

答案 0 :(得分:7)

if ($gender1 = $gender2)

$gender2的值赋给$gender1,如果结果(即$gender2的值)的计算结果为true(每个非空字符串都为真),则继续执行。你想要

if ($gender1 == $gender2)

顺便说一下,整个函数可以写得更短,如下:

function genderMatch($cid1, $cid2) {
  return getGender($cid1) == getGender($cid2);
}

答案 1 :(得分:3)

你必须把两个==进行比较。只有一个,就像你现在一样,你将值分配给第一个变量。

     if($gender1=$gender2)   

会变成

   if($gender1==$gender2)   

答案 2 :(得分:1)

这样:

if($gender1=$gender2)   

应该是

if($gender1==$gender2)   

注意extra ='的标志。我想你可能还需要花括号来表示if / else语句的多行。

答案 3 :(得分:1)

您使用分配运算符=代替比较运算符==(等于)或===(相同)。
Have a look at PHP operators.

答案 4 :(得分:1)

您的代码和分配存在一些结构性问题,而不是比较。

您的代码应如下所示:

function genderMatch($consumerid1, $consumerid2){
    $gender1=getGender($consumerid1);
    $gender2=getGender($consumerid2);
    echo $gender1;
    echo $gender2;
    if($gender1==$gender2){ 
      echo 1;
      return 1;
    }else{
       echo 0;
       return 0;
    }
}

注意if语句中的双重'='符号。这是一个比较。单个'='是一个赋值。此外,如果要使用if / else执行多行代码,则需要括号。

答案 5 :(得分:0)

您正在使用设置变量的单个=,即。 $ gender1的值设置为$ gender2的值。

请改为使用===运算符:if($gender1 === $gender2)。做strict comparisons rather than loose comparisons通常是个好主意。

在此处详细了解运营商:php.net

另一种方法是使用strcmp($gender1, $gender2) == 0。使用比较器方法/函数在字符串数据类型未被视为主数据类型的语言中更常见,例如。 C,Java,C#。