Мне интересно, почему следующий оператор в PHP возвращает true?
true>=4
например, такая строка будет эхо- 1
echo true>=4;
Может ли кто-нибудь объяснить мне логику этого?
В дополнение к ответу Дэвидса, я подумал добавить что-то, чтобы дать немного больше глубины.
PHP в отличие от других языков программирования, если вы не будете осторожны с вашими операторами / синтаксисом, вы можете попасть в хитрые отверстия в горшке, как тот, который вы испытываете.
Как сказал Давид,
4 также верно (потому что оно отличное от нуля), а true равно true, поэтому оно также больше или равно true.
Учитывайте это. Истина больше ложной.
true = 1
false = 0
Так возьмите это, например:
$test = 1; if ($test == true){ echo "This is true"; }else{ echo "This is false"; }
Вышеприведенный результат
Это правда
Но если вы это сделаете:
$test = 1; if ($test === true){ echo "This is true"; }else{ echo "This is false"; }
Вышеуказанное выведет:
Это неверно
Добавленный знак равенства, ищет точное совпадение, таким образом, ищет integer
1 вместо чтения PHP 1 как истинного.
Я знаю, что это немного не по теме, но просто хотел объяснить некоторые горшки, которые содержит PHP.
Надеюсь, это поможет
Редактировать:
Отвечая на ваш вопрос:
echo true> = 4;
Причина, по которой вы видите 1 как результат, состоит в том, что true / false интерпретируется как числа (см. Выше)
Независимо от того, если вы выполняете echo true>=4
или просто echo true;
php устанавливает true как 1 и false как 0
4
также true
(потому что оно отличное от нуля), а true
равно true
, поэтому оно также больше или равно true
.
Если bool или null сравнивается с чем-либо другим, кроме строки, эта вещь передается в bool. См. Документы .