Как связать php if заявления - PullRequest
0 голосов
/ 31 декабря 2011

Я пытаюсь объединить несколько операторов if, используя &&, и похоже, что они работают неправильно. Это мой код.

if ($a == "1" && $b >= "10") 
{ echo "1-3"; }
if ($a == "1" && $b <= "9")
{ echo "0-1"; }
if ($a == "2" && $b >= "10") 
{ echo "2-3"; } 
if ($a == "2" && $b <= "9")
{ echo "0-1"; }
if ($a == "3" && $b >= "10") 
{ echo "2-4"; }
if ($a == "3" && $b <= "9")
{ echo "1-2"; }

Ответы [ 4 ]

1 голос
/ 31 декабря 2011

Вам нужно взять intval($a) и intval($b), если вы ищете числовое сравнение.

Вы должны сравнивать объекты в одной и той же области: intval($a) === 1 строгое, а intval($a) == "1" не имеет типов.И кроме того, вы не должны сравнивать число со строкой.Как я уже сказал, обе стороны сравнения должны находиться в одном домене.

1 голос
/ 31 декабря 2011

Вы можете сравнивать строки, но это не сработает так, как вы думаете. Сравнение строк таким способом будет сравнивать их только на основе символов ASCII-кодов. (Спасибо, Ракета)

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

Строка: $b = "1"; Целое число: $b = 1; (без кавычек)

Возможно, вы также захотите использовать else, если в ваших утверждениях if здесь.

1 голос
/ 31 декабря 2011

Вы не можете сравнивать строку с> или <. Оставьте <code>" (Пример:

if ($a == "1" && $b >= 10) 
{ echo "1-3"; }
0 голосов
/ 31 декабря 2011

Проблема здесь в том, что вы сравниваете строку с int.Когда это происходит, int преобразуется в строку, а затем строки сравниваются на основе кодов ASCII их символов .

. Убедитесь, что $a и $bс помощью intval, а затем сравните их с целыми.

$a = intval($a);
$b = intval($b);
if ($a == 1 && $b >= 10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...