Если нет или заявления - PullRequest
1 голос
/ 18 июня 2011

Очень простой вопрос ... У меня проблема с тем, что оператор if не работает? Все, что я хочу, это утверждение, что, если $ количество не равно 20, или 40, или 80, или 160, чтобы отобразить здесь.

if($quantity != '20' || $quantity !='40' || $quantity != '80' || $quantity != '160')
{       
echo "here";
}

Любые предложения будут оценены. :)

Ответы [ 5 ]

6 голосов
/ 18 июня 2011

Попробуйте, это чище (ИМО):

if (!in_array($quantity, array(20, 40, 80, 160))
{
    echo "here";
}

В противном случае просто замените || на &&.

3 голосов
/ 18 июня 2011

Если $quantity равно 40, это не 20, поэтому условие выполнено.

Изучите и поймите http://en.wikipedia.org/wiki/De_Morgan%27s_Law.

3 голосов
/ 18 июня 2011

заменить || (или) от && (и);)

Таким образом, вы проверяете, является ли что-то 20, затем вы проверяете, является ли что-то 40 и т. Д. Поэтому, когда у вас есть, например, 40, первая проверка (! = 20) просто возвращает True (так как вы используете или) и никогда доходит до второй или дальнейшей проверки.

1 голос
/ 18 июня 2011

Если вы не хотите, чтобы количество в $ равнялось ни одному из них, вам нужно изменить свой '||'или оператор и оператор & &&.

0 голосов
/ 06 августа 2011

Я упростила проверку более высоких чисел, выяснив ваш алгоритм.

Повторяющийся:

<?php
for ($i = 0; $i <= 3; $i++) {
  if ($quantity == pow(2,$i)*20) { echo "not here"; goto matched; }
}
echo "here";
matched:
?>

Более функциональный:

<?php
if (!in_array($quantity,
  array_map(
    function ($i) { return pow(2,$i)*20; },
    range(0,3)
  )
)) {
  echo "here";
} else {
  echo "not here";
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...