Несколько OR в php if (), похоже, не реагируют должным образом. Тестируемые значения массива и все. Что я делаю не так?
Я выполняю очень простое утверждение if, которое работает идеально, пока я не добавлю два дополнительных || (или) операторов.
Я проверил данные массива и таблицы, чтобы убедиться, что они точны в именах и т . Д. И это не пинает. Что я делаю не так? Когда я удаляю дополнительные 2 || options, первый аргумент работает отлично, поэтому я знаю, что моя логика правильная.
Что я назвал здесь неправильно. Кто-то, пожалуйста, поставил меня прямо!
Ваши орды должны быть и. Выражение a != 1 || a != 2 a != 1 || a != 2 всегда истинно, потому что, независимо от значения a, одно или другое из выражений будет истинным, так что конечный результат будет правдой.
Чтобы исправить, измените || to && .
Я предполагаю, что вы допустили эту ошибку, потому что вы начали с этого выражения и хотели инвертировать ее:
Самый простой способ инвертировать эти выражения состоит в следующем:
Используя этот метод, вам не нужно делать какую-либо сложную логическую логику в своей голове, чтобы увидеть, что она работает – это просто отрицание того, что вы уже знаете. Обратите внимание, что это не то же самое, что инвертировать == to != Индивидуально. См . Законы Моргана для более подробной информации.
Хорошо, что я читаю здесь:
Поскольку $variable не может одновременно равняться как A, так и B, она всегда будет печатать «TEST».
Конечно, вышеупомянутое относится к двум последним условиям в вашем if .
Пожалуйста, обратитесь к законам Де Моргана .
Это то же самое, что:
Следовательно, P, Q, R должны быть ложными для печати «TEST». Если одно из них истинно, вы не будете печатать «TEST».
Источник
Php if не работает или
If you want to use the ‘||’ operator to set a default value, like this:
= $fruit || ‘apple’ ; //if $fruit evaluates to FALSE, then $a will be set to TRUE (because (bool)’apple’ == TRUE)
?>
instead, you have to use the ‘?:’ operator:
= ( $fruit ? $fruit : ‘apple’ ); //if $fruit evaluates to FALSE, then $a will be set to ‘apple’
?>
But $fruit will be evaluated twice, which is not desirable. For example fruit() will be called twice:
function fruit ( $confirm ) <
if( $confirm )
return ‘banana’ ;
>
$a = ( fruit ( 1 ) ? fruit ( 1 ) : ‘apple’ ); //fruit() will be called twice!
?>
But since «since PHP 5.3, it is possible to leave out the middle part of the ternary operator» (http://www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary), now you can code like this:
= ( $fruit ? : ‘apple’ ); //this will evaluate $fruit only once, and if it evaluates to FALSE, then $a will be set to ‘apple’
?>
But remember that a non-empty string ‘0’ evaluates to FALSE!
= ‘1’ ;
$a = ( $fruit ? : ‘apple’ ); //this line will set $a to ‘1’
$fruit = ‘0’ ;
$a = ( $fruit ? : ‘apple’ ); //this line will set $a to ‘apple’, not ‘0’!
?>
To assign default value in variable assignation, the simpliest solution to me is:
= my_function () or $v = «default» ;
?>
It works because, first, $v is assigned the return value from my_function(), then this value is evaluated as a part of a logical operation:
* if the left side is false, null, 0, or an empty string, the right side must be evaluated and, again, because ‘or’ has low precedence, $v is assigned the string «default»
* if the left side is none of the previously mentioned values, the logical operation ends and $v keeps the return value from my_function()
This is almost the same as the solution from [phpnet at zc dot webhop dot net], except that his solution (parenthesis and double pipe) doesn’t take advantage of the «or» low precedence.
NOTE: «» (the empty string) is evaluated as a FALSE logical operand, so make sure that the empty string is not an acceptable value from my_function(). If you need to consider the empty string as an acceptable return value, you must go the classical «if» way.
using NULL coalesce operator:
= true == false ?? ‘no’ ;
var_dump ( $nc ); // false
$nc = null ?? ‘yes’ ;
var_dump ( $nc ); // yes
$username = null == false ?? ‘no’ ;
var_dump ( $nc ); // true
$nc = $_GET [ ‘something’ ] ?? ‘default’ ;
var_dump ( $nc ); // default
$nc = !isset( $_GET [ ‘something’ ]) ?? ‘wtf’ ;
var_dump ( $nc ); // true
$nc = isset( $_GET [ ‘something’ ]) ?? ‘wtf’ ;
var_dump ( $nc ); // false
$_POST [ ‘second’ ] = ‘chain’ ;
$nc = $_GET [ ‘first’ ] ?? $_POST [ ‘second’ ] ?? $_REQUEST [ ‘third’ ] ?? ‘wtf’ ;
var_dump ( $nc ); // chain
?>
Источник
Не работает if
Подскажите пожалуйста (все перепробовал)
Почему не отрабатывает if в этом коде
Сначала объясню:
По GET прилетают данные я им назначаю перемнные
если этот if возвращает true (а $shp_item полюбому =1)
то дальше работают другие if
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Приложение работает в Debug, странно работает в Release и не работает при билде
Действия выполняются на эмуляторе Pixel 2. Android 9.0. Если я запускаю приложение с конфигурацией.
Мышь работает через раз, то есть запустил ОС — мышь не работает, перезагрузил — мышь работает
Установлена Windows 7 со всеми последними обновлениями. Все всегда замечательно работало. Но с.
для примера возьмем это условие, функция empty() проверяет пустая переменная или нет, в вашем случае она не пустая и конечно же не будет выполняться код внутри скобок. Давайте для начала поступим вот как:
Поставьте перед всеми функциями empty восклицательный знак:
так вот когда empty без ! То выводится Ок
а когда empty с ! то ничего не выводится. Хитя по идее должно быть на оборот. Поэтому и убрал везде !
Добавлено через 36 минут
Все правильно надо !empty , но все равно не работает (((
Swf не работает, а в тестовом режиме в самом flash и формате exe работает
Доброго времени суток. Такая проблема: есть рабочий код обмена данными с php скриптам. В тестовом.
Не работает скомпилированный EXE файл хотя в самой среде игра работает
Я почти закончил разработку своей игры на Unity2D но после запуска скомпилированного EXE файла.
Решил портировать игру на андроид но управление не работает. Прыжок и стрельба работает. Очень.
При включении компа у меня не работает монитор, но нормально работает ТВ-выход
Уже несколько дней рву волосы на голове. Такая проблемка: при включении компа у меня не.
Windows 7, не работает часть служб, не работает сеть, восстановление системы не помогает
Приветствую коллеги! Сам админю уже лет 10, не случалось ситуации еще что гугл не помогал, но вот.
Источник
Не работает логический оператор «или»
Возникла следующая проблема: при написании кода в Dreamweaver CS5.5, не правильно обрабатывается условный оператор if с использованием логического оператора «или». В любой ситуации выдает сообщение «Вы заполнили не все поля!», в то время, как все поля заполнены. Пробовал оператор «or», та же ситуация. А вот оператор «и» && работает корректно. Помогите решить проблему. Спасибо.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Собственно числа исправлять к примеру с «1200» на «1 200», «12000» на «12 000», «120000» на.
У кого есть теория на тему «аутентификация в web» или «авторизация в web» ?? хоть бы на 4-5 страничек а4
У кого есть теория на тему «аутентификация в web» или «авторизация в web» ?? хоть бы на 4-5.
Оператор «-» (минус) применительно к String
Разбираю чужой код, наткнулся на следующее: $str1 = ‘первая_строчка’; $str2 = ‘вторая_строка’;.
Например: $fruits = array(‘strawberry’ => ‘red’, ‘banana’ => ‘yellow’);
Здравствуйте. Имеется примерно такой текст «XX1,XX3-XX11» и нужно получить последний символ «,» или.
Источник
Почему не работает OR в условии?
Почему может не работать OR? Если оставить условие $query != 404 одним, то будет всё хорошо, но если у меня появляется OR, то ничего не работает
- Вопрос задан более года назад
- 94 просмотра
FanatPHP, я в пересказе ошибся. «если пустой»
is_eampty($query) — проверяет на пустоту.
У меня есть список кодов: 404, 403, 402, 401. Работать я буду только с ними. Мне нужно сделать так, чтобы в GET ничего своего нельзя было подсунуть. Если подставляется что-то иное — возвращается 404 код.
Тебе нужен оператор AND, а не OR. Не работает у тебя сейчас потому, что как правильно написали Артур и AUser0 , условие $query != 404 or $query != 403 будет выполняться вообще всегда, поскольку если $query равно 404 то тогда не будет равно 403, и наоборот. А тебе нужно чтобы правильным был только один из вариантов. Это делает AND.
Кроме того, функция «is_eampty» в твоем примере вообще не нужна. Если переменная $query определена до условия, то тебе нужно только
if ($query != 404 AND $query != 403) <
Если я правильно понял этот ужас, который написан у тебя в вопросе, то тебе надо
Источник