<?php
$gender = "devilcode";
if (($gender == "female") || ($gender = "male"))
{
echo "ok";
}
else echo "no";
?>
「いいえ」を出力するはずですが、「OK」を出力します。私は何を間違っていますか?
<?php
$gender = "devilcode";
if (($gender == "female") || ($gender = "male"))
{
echo "ok";
}
else echo "no";
?>
「いいえ」を出力するはずですが、「OK」を出力します。私は何を間違っていますか?
比較のためにテストするのではなく、男性であることを割り当て$gender
ています。2 つの等号が必要です。
$gender = "devilcode";
if (($gender == "female") || ($gender == "male"))
echo "ok";
else
echo "no";
等号がありません:
($gender == "male")
編集:まさにこの理由から、多くのコーダーは、左側に静的な値を使用して、比較を逆に記述することを提案しています。
if ("male" == $gender) { ... }
このように、忘れて == の代わりに = を使用すると、構文エラーが発生します。
IF の 2 番目の部分$gender="male"
ですか? これは常に true を返し、問題を引き起こしていると思います。成功する$gender=="male"
テストの 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"
varをcopmaring()ではなく'male'()に割り当て$gender
ています$gender = 'male'
$gender == 'male'
また、いくつかの可能な結果に対してテストしたい場合は、試してみてくださいin_array()
$gender = 'devilcode'
$genders = array('female','male','unknown')
if(in_array($gender, $genders)){
echo 'ok';
}else{
echo 'no';
}
よろしく。
このようなエラーから保護する条件を記述するための良い方法は、逆表記を使用することです。
if ('female' === $gender || 'male' === $gender) {...
また:
$allowed = array('male', 'female', 'unknown');
if (in_array($gender, $allowed)) {...