我无法在PHP中比较两个字符串

时间:2011-03-13 21:31:03

标签: php string comparison-operators

    <?php
    $gender = "devilcode";
    if (($gender == "female") || ($gender = "male"))
        {
            echo "ok";
        }
    else echo "no";
    ?>

它应输出“no”但输出“ok”。我做错了什么?

6 个答案:

答案 0 :(得分:13)

您将$gender指定为男性,而不是对其进行测试以进行比较,您需要两个相同的符号:

$gender = "devilcode";
if (($gender == "female") || ($gender == "male"))
    echo "ok";
else 
    echo "no";

答案 1 :(得分:7)

你错过了一个等号:

($gender == "male")

编辑:出于这个原因,许多程序员建议用相反的方式编写比较,左边是静态值:

if ("male" == $gender) { ... }

这样,如果您忘记并使用=而不是==,则会出现语法错误。

答案 2 :(得分:5)

IF $gender="male"的第二部分是?我认为这总是会回归真实并导致问题。设为$gender=="male"

答案 3 :(得分:2)

测试的第二部分有一个错误。取代

($gender = "male") // assign $gender with the value "male"
                   // this is always evaluated to TRUE in your test

通过

($gender == "male") // test that $gender is equal to "male"

答案 4 :(得分:1)

编写条件的良好实践,可以防止这样的错误使用反符号:

if ('female' === $gender || 'male' === $gender) {...    

或:

$allowed = array('male', 'female', 'unknown');
if (in_array($gender, $allowed)) {... 

答案 5 :(得分:1)

您将var $gender分配给“男性”($gender = 'male')而不是将其复制($gender == 'male'

另外,如果您想针对几种可能的结果进行测试,请尝试in_array()

$gender = 'devilcode'
$genders = array('female','male','unknown')
if(in_array($gender, $genders)){
 echo 'ok';
}else{
 echo 'no';
}

问候。