@del993788

Почему не работает OR в условии?

Почему может не работать OR? Если оставить условие $query != 404 одним, то будет всё хорошо, но если у меня появляется OR, то ничего не работает

function is_eampty(&$var)
{
    return !($var || (is_scalar($var) && strlen($var)));
}

$query = $_GET['w'];


if (is_eampty($query) or $query != 404 or $query != 403){
$query = "404";
include 'error.tpl';
} else {
$query = $_GET['w'];
include 'error.tpl';
}
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Тебе нужен оператор AND, а не OR. Не работает у тебя сейчас потому, что как правильно написали Артур и AUser0 , условие $query != 404 or $query != 403 будет выполняться вообще всегда, поскольку если $query равно 404 то тогда не будет равно 403, и наоборот. А тебе нужно чтобы правильным был только один из вариантов. Это делает AND.

Кроме того, функция "is_eampty" в твоем примере вообще не нужна. Если переменная $query определена до условия, то тебе нужно только
if ($query != 404 AND $query != 403){
Если я правильно понял этот ужас, который написан у тебя в вопросе, то тебе надо
$query = $_GET['w'] ?? "";
if ($query != 404 AND $query != 403){
    $query = "404";
}
include 'error.tpl';
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@ar2rsoft
PHP-developer
Это бессмысленное условие, оно всегда будет true
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
С двумя этими OR у вас всегда будет выполняться код $query = "404";.
Потому что сработает или одно неравенство (когда $query==403), или другое неравенство (когда $query==404), или оба неравенства (когда $query==401).

P.S. Только непонятно, а что именно не работает-то? Код без ошибок, рабочий, в чём проблема-то?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы