<?php
$gender = "devilcode";
if (($gender == "female") || ($gender = "male"))
{
echo "ok";
}
else echo "no";
?>
它应该输出“no”,但输出“ok”。我究竟做错了什么?
<?php
$gender = "devilcode";
if (($gender == "female") || ($gender = "male"))
{
echo "ok";
}
else echo "no";
?>
它应该输出“no”,但输出“ok”。我究竟做错了什么?
您指定$gender
为男性,而不是测试它进行比较,您需要两个等号:
$gender = "devilcode";
if (($gender == "female") || ($gender == "male"))
echo "ok";
else
echo "no";
你缺少一个等号:
($gender == "male")
编辑:出于这个原因,许多编码人员建议以相反的方式编写比较,左侧的静态值:
if ("male" == $gender) { ... }
这样,如果您忘记并使用 = 而不是 ==,则会出现语法错误。
是IF的第二部分$gender="male"
吗?我认为这总是返回 true 并导致问题。做了$gender=="male"
测试的第二部分有一个错误。代替
($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"
编写条件的良好做法是使用反向表示法,以防止出现此类错误:
if ('female' === $gender || 'male' === $gender) {...
或者:
$allowed = array('male', 'female', 'unknown');
if (in_array($gender, $allowed)) {...
您将 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';
}
问候。