我正在尝试写一个简单的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
我目前不知所措,有什么建议吗?
答案 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#。