Как исправить это, если заявление с OR и AND в PHP?

0

Я пытаюсь закодировать эту логику, но у меня возникают трудности, потому что

Если a или b существует и в одно и то же время, если c больше, чем 2010, а d более чем на 15,500 эха.

<?php if ((($row['a'] >1) || ($row['b'] >1)) && (($row['c'] >=2010) && ($row['d'] >=15.500)))  { ?>
  • 2
    Что вы подразумеваете под «если существует a или b»? Вы заявляете, если поля a или b равны 2 или выше.
  • 0
    что такое $row ? что не так с этим? кажется нормальным. (если $row['a'] обрабатывается как a )
Теги:

5 ответов

0
Лучший ответ

Если $row['a'] > 1, как вы проверить существует, ваша единственная проблема заключается в том, что вы должны использовать a > вместо >=, например, так:

if ((($row['a'] > 1) || ($row['b'] > 1)) && (($row['c'] > 2010) && ($row['d'] > 15.5)))

Expanded:

if (
    (
        ($row['a'] > 1) || ($row['b'] > 1) // a or b exist
    )
    && // and
    (
        ($row['c'] > 2010) && ($row['d'] > 15.5) // c more than 2010 and d more than 15.5
    )
)
  • 0
    хорошо >= , кажется, не вносит изменения
  • 1
    @Xalloumokkelos Каков ваш тестовый ввод? Каков ожидаемый результат?
Показать ещё 2 комментария
0

Мог бы также добавить мою версию!

if ( (array_key_exists('a', $row) || array_key_exists('b', $row)) && ($row['c'] >=2010 && $row['d'] >=15.500) ) echo 'hello';

ОП специально спросил, существует ли a или b

0

Это то, что вы ищете?

С существует, может быть, вы имеете в виду функцию isset?

if ( 
  (isset($row['a']) || isset($row['b'])) && 
  ($row['c'] > 2010 && $row['d'] > 15500) ) {
    echo 'something';
}
0
if 
   (
      (
        ($row['a'] > 1) || ($row['b'] > 1) // if a or b exists
      ) 

      && // at the same time

      (
        ($row['c'] > 2010) // c is more than 2010

        && // and

        ($row['d'] > 15.500) // d is more than 15.500
      )
   ) 
   {
      echo 'something.';
   }
0

Я думаю, что мне удалось понять, что вы делаете, я придумал:

if (($row['a'] > 1) || ($row['b'] >1)) && (($row['c'] >= 2010) && ($row['d'] >= 15.500)) { echo "Something"; }

Это одно утверждение, если это не так, поэтому должен быть только один набор круглых скобок.

Edit: Предполагается, что $ row ['a']> 1 - ваш метод проверки.

  • 0
    Это синтаксически неверно; это не работает.
  • 0
    Ошибка с моей стороны. Должен теперь делать так, как просил аскер.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню