<?php
$gender = "devilcode";
if (($gender == "female") || ($gender = "male"))
{
echo "ok";
}
else echo "no";
?>
它应输出“no”但输出“ok”。我做错了什么?
答案 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';
}
问候。