#php
#php
Вопрос:
<?php
$gender = 0;
if (($gender != 0) || ($gender != 1))
{
die('error:Must select a gender.');
}
?>
Это должно выдать ошибку, если пол отличается от 1
или 0
. Так что, если я дал 5
, оно должно умереть. Если бы я его дал 1
, оно не должно умереть. Если я дам его 0
, оно не должно умереть.
Я думал о нескольких обходных путях
<?php
$gender = 0;
if ($gender == 0)
{
//number is okay
}
else if ($gender == 1)
{
//number is okay
}
else
{
die('error:Must select a gender.');
}
?>
Ну, это выглядит неаккуратно, и это сработало бы, или я мог бы создать массив с 0 и 1 и проверить, есть ли в нем или нет. Я думаю, это перебор.
Не уверен, что я делаю неправильно.
Комментарии:
1. Если вы можете сделать gender целым числом без знака, вы можете просто проверить, является ли($gender > 1){die(‘etc.’);}
Ответ №1:
Вы используете неправильный логический оператор:
if (($gender != 0) || ($gender != 1)) {
}
Это будет введено, если пол также равен 0, потому что он не равен 1, и наоборот. Что вам нужно сделать, это:
if (($gender != 0) amp;amp; ($gender != 1)) {
}
Посмотрите на эту таблицу:
gender A (gender != 0) B (gender != 1) A || B A amp;amp; B
----------------------------------------------------------------
0 false true true false
1 true false true false
5 true true true true
Также обратите внимание на предложение Джошуа в комментариях:
if (($gender == 0) || ($gender == 1)) {
/* number is ok */
} else {
die();
}
это немного длиннее, но более читабельно.
Комментарии:
1. Выполнение
if (($gender == 0) || ($gender == 1)) { /* number is ok */ } else { die(); }
также будет работать.2. @Joshua: Да, и это более читабельно. Я отредактировал и предложил это.
3. Спасибо. Я понял это! Я чувствую себя немного глупо, но теперь понимаю. Будет известно позже. Все еще учусь, самостоятельно.
4. Булева алгебра может быть трудной для понимания в начале, поэтому не нужно чувствовать себя глупо 🙂
Ответ №2:
if (($gender != 0) amp;amp; ($gender != 1))
^^
Вы хотите умереть, если оба теста верны.
Ответ №3:
Измените or ( ||
) на and ( amp;amp;
), и это должно сработать, так как вы хотите потерпеть неудачу только тогда, когда это не 0
так и не 1
так.