Не работает условие если в условии есть || в чём причина?

Добрый день, коллеги : )
почему так работает:

<?if ( 
($APPLICATION->GetCurDir()=='/otdykh-u-ivanycha/') 
|| ($APPLICATION->GetCurDir()=='/otdykh-u-ivanycha/banya-1/') 
):?>
   Действие
<?endif; ?>


так, не работает:

<?if ( ($APPLICATION->GetCurDir()!='/otdykh-u-ivanycha/')   
|| ($APPLICATION->GetCurDir()!='/otdykh-u-ivanycha/banya-1/') 
):?>
   Действие
<?endif; ?>


а так, тоже работает:

<?if ( ($APPLICATION->GetCurDir()!='/otdykh-u-ivanycha/')   

):?>
   Действие
<?endif; ?>


или так:

<?if (($APPLICATION->GetCurDir()!='/otdykh-u-ivanycha/banya-1/') 
):?>
   Действие
<?endif; ?>


Условие != через || не работает, а по одиночке работает. В чём может быть причина?
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
($dir == 'первый-вариант') || ($dir == 'второй-вариант')
Директория равна первому варианту ИЛИ директория равна второму варианту. Это условие будет выполняться только при двух перечисленных значениях $dir.

($dir != 'первый-вариант') || ($dir != 'второй-вариант')
Директория не равна первому варианту ИЛИ директория не равна второму варианту. Это условие будет выполняться всегда - если $dir не равна ни одному из вариантов, то условие выполнится. Если равна первому, то заведомо не равна второму и наоборот - условие всегда выполняется.

Вы не указали что вы подразумеваете под "условие работает", но, полагаю, вам нужно это:
if (
  ($APPLICATION->GetCurDir() != '/otdykh-u-ivanycha/')   
  && ($APPLICATION->GetCurDir() != '/otdykh-u-ivanycha/banya-1/') 
) {}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы