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

「いいえ」を出力するはずですが、「OK」を出力します。私は何を間違っていますか?

4

6 に答える 6

13

比較のためにテストするのではなく、男性であることを割り当て$genderています。2 つの等号が必要です。

$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 の 2 番目の部分$gender="male"ですか? これは常に true を返し、問題を引き起こしていると思います。成功する$gender=="male"

于 2011-03-13T21:32:33.993 に答える
2

テストの 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

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';
}

よろしく。

于 2012-09-05T17:31:36.383 に答える
1

このようなエラーから保護する条件を記述するための良い方法は、逆表記を使用することです。

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

また:

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