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

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

4

6 回答 6

13

您指定$gender为男性,而不是测试它进行比较,您需要两个等号:

$gender = "devilcode";
if (($gender == "female") || ($gender == "male"))
    echo "ok";
else 
    echo "no";
于 2011-03-13T21:32:52.413 回答
7

你缺少一个等号:

($gender == "male")

编辑:出于这个原因,许多编码人员建议以相反的方式编写比较,左侧的静态值:

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

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

于 2011-03-13T21:32:33.093 回答
5

是IF的第二部分$gender="male"吗?我认为这总是返回 true 并导致问题。做了$gender=="male"

于 2011-03-13T21:32:33.993 回答
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"
于 2011-03-13T21:33:04.380 回答
1

编写条件的良好做法是使用反向表示法,以防止出现此类错误:

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

或者:

$allowed = array('male', 'female', 'unknown');
if (in_array($gender, $allowed)) {... 
于 2011-07-15T19:20:14.237 回答
1

您将 var 分配$gender给 'male' ( $gender = 'male') 而不是 copmaring ( $gender == 'male')

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

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

问候。

于 2012-09-05T17:31:36.383 回答