No hay operadores de comparación estrictamente idénticos ( >==
o <==
) en PHP (por PHP 5.6.14 al menos) , pero hay algunas formas de hacer cumplir una verificación de tipo estricta antes de marcar Mayor / Inferior:
- Marque ambos tipos de variables con
if (gettype($a) === gettype($b))
- Fuerza el tipo de conversión necesario, por ejemplo.
if ((string)$a === (string)$b)
- Fuerza tu tipo de malabarismo necesario, por ejemplo.
if (($a . '') === ($b . ''))
Toma nota de que:
- La precisión del punto flotante es limitada
INF
y NAN
son de tipofloat
bajoieee754
- Algunos Infinity equivalen a otros Infinity (desde PHP 5.4)
- La notación científica
e
es siempre de tipo float
y nunca, integer
incluso si el número es pequeño
- Los enteros que se superan
PHP_INT_MAX
se convierten automáticamente enfloat
- Flota sobre los límites del sistema
INF
valor
- Las variables indefinidas son de tipo y valor
NULL
- Enteros precedidos por
0
se convierten de octal a decimal (por convención)
- La conversión de cadenas que contienen un número entero con un encabezado
0
a un número entero elimina el encabezado0
Lista de algunas comparaciones exóticas:
Muy extraño:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float (NAN) float (-INF) falso falso falso falso falso falso
float (NAN) float (0) falso falso falso falso falso falso
float (NAN) float (1) falso falso falso falso falso falso
float (NAN) float (INF) falso falso falso falso falso falso
float (NAN) float (NAN) falso falso falso falso falso falso
float (NAN) int (-1) falso falso falso falso falso falso
float (NAN) int (0) falso falso falso falso falso falso
float (NAN) int (1) falso falso falso falso falso falso
Igual pero no idéntico:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) array () falso falso verdadero verdadero verdadero falso
NULL (NULL) bool (falso) falso falso verdadero verdadero verdadero falso
NULL (NULL) float (0) falso falso verdadero verdadero verdadero falso
NULL (NULL) int (0) falso falso verdadero verdadero verdadero falso
NULL (NULL) str ('') falso falso verdadero verdadero verdadero falso
array () bool (falso) falso falso verdadero verdadero verdadero falso
bool (falso) float (0) falso falso verdadero verdadero verdadero falso
bool (falso) int (0) falso falso verdadero verdadero verdadero falso
str ('') bool (falso) falso falso verdadero verdadero verdadero falso
bool (falso) str ('0') falso falso verdadero verdadero verdadero falso
float (-INF) bool (verdadero) falso falso verdadero verdadero verdadero falso
bool (verdadero) float (1) falso falso verdadero verdadero verdadero falso
float (INF) bool (verdadero) falso falso verdadero verdadero verdadero falso
float (NAN) bool (verdadero) falso falso verdadero verdadero verdadero falso
bool (verdadero) int (-1) falso falso verdadero verdadero verdadero falso
bool (verdadero) int (1) falso falso verdadero verdadero verdadero falso
bool (verdadero) str ("\ 0") falso falso verdadero verdadero verdadero falso
bool (verdadero) str ('+') falso falso verdadero verdadero verdadero falso
bool (verdadero) str ('-') falso falso verdadero verdadero verdadero falso
bool (verdadero) str ('01 ') falso falso verdadero verdadero verdadero falso
bool (verdadero) str ('1') falso falso verdadero verdadero verdadero falso
bool (verdadero) str ('falso') falso falso verdadero verdadero verdadero falso
str ('texto') bool (verdadero) falso falso verdadero verdadero verdadero falso
str ('verdadero') bool (verdadero) falso falso verdadero verdadero verdadero falso
int (0) float (0) falso falso verdadero verdadero verdadero falso
str ("\ 0") float (0) falso falso verdadero verdadero verdadero falso
str ('') float (0) falso falso verdadero verdadero verdadero falso
str ('+') float (0) falso falso verdadero verdadero verdadero falso
str ('-') float (0) falso falso verdadero verdadero verdadero falso
str ('0') float (0) falso falso verdadero verdadero verdadero falso
str ('falso') float (0) falso falso verdadero verdadero verdadero falso
str ('texto') float (0) falso falso verdadero verdadero verdadero falso
str ('verdadero') float (0) falso falso verdadero verdadero verdadero falso
int (1) float (1) falso falso verdadero verdadero verdadero falso
float (1) str ('01 ') falso falso verdadero verdadero verdadero falso
float (1) str ('1') falso falso verdadero verdadero verdadero falso
str ("\ 0") int (0) falso falso verdadero verdadero verdadero falso
str ('') int (0) falso falso verdadero verdadero verdadero falso
str ('+') int (0) falso falso verdadero verdadero verdadero falso
str ('-') int (0) falso falso verdadero verdadero verdadero falso
int (0) str ('0') falso falso verdadero verdadero verdadero falso
str ('falso') int (0) falso falso verdadero verdadero verdadero falso
str ('texto') int (0) falso falso verdadero verdadero verdadero falso
str ('verdadero') int (0) falso falso verdadero verdadero verdadero falso
int (1) str ('01 ') falso falso verdadero verdadero verdadero falso
int (1) str ('1') falso falso verdadero verdadero verdadero falso
str ('1') str ('01 ') falso falso verdadero verdadero verdadero falso
¿Más bajo y más grande al mismo tiempo?
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float (NAN) str ("\ 0") verdadero verdadero verdadero verdadero falso falso
float (NAN) str ('') verdadero verdadero verdadero verdadero falso falso
float (NAN) str ('+') verdadero verdadero verdadero verdadero falso falso
float (NAN) str ('-') verdadero verdadero verdadero verdadero falso falso
float (NAN) str ('0') verdadero verdadero verdadero verdadero falso falso
float (NAN) str ('01 ') verdadero verdadero verdadero verdadero falso falso
float (NAN) str ('1') verdadero verdadero verdadero verdadero falso falso
float (NAN) str ('falso') verdadero verdadero verdadero verdadero falso falso
float (NAN) str ('texto') verdadero verdadero verdadero verdadero falso falso
float (NAN) str ('verdadero') verdadero verdadero verdadero verdadero falso falso
Igual e idéntico:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) NULL (NULL) falso falso verdadero verdadero verdadero verdadero
float (-INF) float (-INF) falso falso verdadero verdadero verdadero verdadero
float (INF) float (INF) falso falso verdadero verdadero verdadero verdadero
Menor o mayor:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) bool (verdadero) falso verdadero verdadero falso falso falso
float (-INF) NULL (NULL) verdadero falso falso verdadero falso falso
NULL (NULL) float (1) falso verdadero verdadero falso falso falso
float (INF) NULL (NULL) verdadero falso falso verdadero falso falso
float (NAN) NULL (NULL) verdadero falso falso verdadero falso falso
NULL (NULL) int (-1) falso verdadero verdadero falso falso falso
NULL (NULL) int (1) falso verdadero verdadero falso falso falso
NULL (NULL) str ("\ 0") falso verdadero verdadero falso falso falso
NULL (NULL) str ('+') falso verdadero verdadero falso falso falso
NULL (NULL) str ('-') falso verdadero verdadero falso falso falso
NULL (NULL) str ('0') falso verdadero verdadero falso falso falso
NULL (NULL) str ('01 ') falso verdadero verdadero falso falso falso
NULL (NULL) str ('1') falso verdadero verdadero falso falso falso
NULL (NULL) str ('falso') falso verdadero verdadero falso falso falso
NULL (NULL) str ('texto') falso verdadero verdadero falso falso falso
NULL (NULL) str ('verdadero') falso verdadero verdadero falso falso falso
array () bool (verdadero) falso verdadero verdadero falso falso falso
float (-INF) array () falso verdadero verdadero falso falso falso
array () float (0) verdadero falso falso verdadero falso falso
array () float (1) verdadero falso falso verdadero falso falso
float (INF) array () falso verdadero verdadero falso falso falso
float (NAN) array () falso verdadero verdadero falso falso falso
array () int (-1) verdadero falso falso verdadero falso falso
array () int (0) verdadero falso falso verdadero falso falso
array () int (1) verdadero falso falso verdadero falso falso
array () str ("\ 0") verdadero falso falso verdadero falso falso
str ('') array () falso verdadero verdadero falso falso falso
array () str ('+') verdadero falso falso verdadero falso falso
array () str ('-') verdadero falso falso verdadero falso falso
array () str ('0') verdadero falso falso verdadero falso falso
array () str ('01 ') verdadero falso falso verdadero falso falso
array () str ('1') verdadero falso falso verdadero falso falso
array () str ('falso') verdadero falso falso verdadero falso falso
array () str ('texto') verdadero falso falso verdadero falso falso
array () str ('verdadero') verdadero falso falso verdadero falso falso
bool (verdadero) bool (falso) verdadero falso falso verdadero falso falso
float (-INF) bool (falso) verdadero falso falso verdadero falso falso
float (1) bool (falso) verdadero falso falso verdadero falso falso
float (INF) bool (falso) verdadero falso falso verdadero falso falso
float (NAN) bool (falso) verdadero falso falso verdadero falso falso
bool (falso) int (-1) falso verdadero verdadero falso falso falso
int (1) bool (falso) verdadero falso falso verdadero falso falso
bool (falso) str ("\ 0") falso verdadero verdadero falso falso falso
bool (falso) str ('+') falso verdadero verdadero falso falso falso
bool (falso) str ('-') falso verdadero verdadero falso falso falso
bool (falso) str ('01 ') falso verdadero verdadero falso falso falso
str ('1') bool (falso) verdadero falso falso verdadero falso falso
bool (falso) str ('falso') falso verdadero verdadero falso falso falso
str ('texto') bool (falso) verdadero falso falso verdadero falso falso
str ('verdadero') bool (falso) verdadero falso falso verdadero falso falso
bool (verdadero) float (0) verdadero falso falso verdadero falso falso
bool (verdadero) int (0) verdadero falso falso verdadero falso falso
str ('') bool (verdadero) falso verdadero verdadero falso falso falso
bool (verdadero) str ('0') verdadero falso falso verdadero falso falso
float (-INF) float (0) falso verdadero verdadero falso falso falso
float (-INF) float (1) falso verdadero verdadero falso falso falso
float (INF) float (-INF) verdadero falso falso verdadero falso falso
float (-INF) int (-1) falso verdadero verdadero falso falso falso
float (-INF) int (0) falso verdadero verdadero falso falso falso
float (-INF) int (1) falso verdadero verdadero falso falso falso
float (-INF) str ("\ 0") falso verdadero verdadero falso falso falso
float (-INF) str ('') falso verdadero verdadero falso falso falso
float (-INF) str ('+') falso verdadero verdadero falso falso falso
float (-INF) str ('-') falso verdadero verdadero falso falso falso
float (-INF) str ('0') falso verdadero verdadero falso falso falso
float (-INF) str ('01 ') falso verdadero verdadero falso falso falso
float (-INF) str ('1') falso verdadero verdadero falso falso falso
float (-INF) str ('falso') falso verdadero verdadero falso falso falso
float (-INF) str ('texto') falso verdadero verdadero falso falso falso
float (-INF) str ('verdadero') falso verdadero verdadero falso falso falso
float (1) float (0) verdadero falso falso verdadero falso falso
float (INF) float (0) verdadero falso falso verdadero falso falso
float (0) int (-1) verdadero falso falso verdadero falso falso
int (1) float (0) verdadero falso falso verdadero falso falso
float (0) str ('01 ') falso verdadero verdadero falso falso falso
str ('1') float (0) verdadero falso falso verdadero falso falso
float (INF) float (1) verdadero falso falso verdadero falso falso
float (1) int (-1) verdadero falso falso verdadero falso falso
float (1) int (0) verdadero falso falso verdadero falso falso
float (1) str ("\ 0") verdadero falso falso verdadero falso falso
str ('') float (1) falso verdadero verdadero falso falso falso
float (1) str ('+') verdadero falso falso verdadero falso falso
float (1) str ('-') verdadero falso falso verdadero falso falso
float (1) str ('0') verdadero falso falso verdadero falso falso
float (1) str ('falso') verdadero falso falso verdadero falso falso
str ('texto') float (1) falso verdadero verdadero falso falso falso
str ('verdadero') float (1) falso verdadero verdadero falso falso falso
float (INF) int (-1) verdadero falso falso verdadero falso falso
float (INF) int (0) verdadero falso falso verdadero falso falso
float (INF) int (1) verdadero falso falso verdadero falso falso
float (INF) str ("\ 0") verdadero falso falso verdadero falso falso
float (INF) str ('') verdadero falso falso verdadero falso falso
float (INF) str ('+') verdadero falso falso verdadero falso falso
float (INF) str ('-') verdadero falso falso verdadero falso falso
float (INF) str ('0') verdadero falso falso verdadero falso falso
float (INF) str ('01 ') verdadero falso falso verdadero falso falso
float (INF) str ('1') verdadero falso falso verdadero falso falso
float (INF) str ('falso') verdadero falso falso verdadero falso falso
float (INF) str ('texto') verdadero falso falso verdadero falso falso
float (INF) str ('verdadero') verdadero falso falso verdadero falso falso
int (0) int (-1) verdadero falso falso verdadero falso falso
int (1) int (-1) verdadero falso falso verdadero falso falso
str ("\ 0") int (-1) verdadero falso falso verdadero falso falso
str ('') int (-1) verdadero falso falso verdadero falso falso
str ('+') int (-1) verdadero falso falso verdadero falso falso
str ('-') int (-1) verdadero falso falso verdadero falso falso
str ('0') int (-1) verdadero falso falso verdadero falso falso
int (-1) str ('01 ') falso verdadero verdadero falso falso falso
str ('1') int (-1) verdadero falso falso verdadero falso falso
str ('falso') int (-1) verdadero falso falso verdadero falso falso
str ('texto') int (-1) verdadero falso falso verdadero falso falso
str ('verdadero') int (-1) verdadero falso falso verdadero falso falso
int (1) int (0) verdadero falso falso verdadero falso falso
int (0) str ('01 ') falso verdadero verdadero falso falso falso
str ('1') int (0) verdadero falso falso verdadero falso falso
int (1) str ("\ 0") verdadero falso falso verdadero falso falso
str ('') int (1) falso verdadero verdadero falso falso falso
int (1) str ('+') verdadero falso falso verdadero falso falso
int (1) str ('-') verdadero falso falso verdadero falso falso
int (1) str ('0') verdadero falso falso verdadero falso falso
int (1) str ('falso') verdadero falso falso verdadero falso falso
str ('texto') int (1) falso verdadero verdadero falso falso falso
str ('verdadero') int (1) falso verdadero verdadero falso falso falso
str ('') str ("\ 0") falso verdadero verdadero falso falso falso
str ('+') str ("\ 0") verdadero falso falso verdadero falso falso
str ('-') str ("\ 0") verdadero falso falso verdadero falso falso
str ("\ 0") str ('0') falso verdadero verdadero falso falso falso
str ("\ 0") str ('01 ') falso verdadero verdadero falso falso falso
str ('1') str ("\ 0") verdadero falso falso verdadero falso falso
str ('falso') str ("\ 0") verdadero falso falso verdadero falso falso
str ('texto') str ("\ 0") verdadero falso falso verdadero falso falso
str ('true') str ("\ 0") verdadero falso falso verdadero falso falso
str ('') str ('+') falso verdadero verdadero falso falso falso
str ('') str ('-') falso verdadero verdadero falso falso falso
str ('') str ('0') falso verdadero verdadero falso falso falso
str ('') str ('01 ') falso verdadero verdadero falso falso falso
str ('') str ('1') falso verdadero verdadero falso falso falso
str ('') str ('falso') falso verdadero verdadero falso falso falso
str ('') str ('text') falso verdadero verdadero falso falso falso
str ('') str ('true') falso verdadero verdadero falso falso falso
str ('-') str ('+') verdadero falso falso verdadero falso falso
str ('+') str ('0') falso verdadero verdadero falso falso falso
str ('+') str ('01 ') falso verdadero verdadero falso falso falso
str ('1') str ('+') verdadero falso falso verdadero falso falso
str ('falso') str ('+') verdadero falso falso verdadero falso falso
str ('texto') str ('+') verdadero falso falso verdadero falso falso
str ('verdadero') str ('+') verdadero falso falso verdadero falso falso
str ('-') str ('0') falso verdadero verdadero falso falso falso
str ('-') str ('01 ') falso verdadero verdadero falso falso falso
str ('1') str ('-') verdadero falso falso verdadero falso falso
str ('falso') str ('-') verdadero falso falso verdadero falso falso
str ('texto') str ('-') verdadero falso falso verdadero falso falso
str ('verdadero') str ('-') verdadero falso falso verdadero falso falso
str ('0') str ('01 ') falso verdadero verdadero falso falso falso
str ('1') str ('0') verdadero falso falso verdadero falso falso
str ('falso') str ('0') verdadero falso falso verdadero falso falso
str ('texto') str ('0') verdadero falso falso verdadero falso falso
str ('verdadero') str ('0') verdadero falso falso verdadero falso falso
str ('falso') str ('01 ') verdadero falso falso verdadero falso falso
str ('texto') str ('01 ') verdadero falso falso verdadero falso falso
str ('verdadero') str ('01 ') verdadero falso falso verdadero falso falso
str ('1') str ('falso') falso verdadero verdadero falso falso falso
str ('texto') str ('1') verdadero falso falso verdadero falso falso
str ('verdadero') str ('1') verdadero falso falso verdadero falso falso
str ('texto') str ('falso') verdadero falso falso verdadero falso falso
str ('verdadero') str ('falso') verdadero falso falso verdadero falso falso
str ('verdadero') str ('texto') verdadero falso falso verdadero falso falso
$a > $b > $c
Enigma cuando: $a
no es mayor que $c
.
A <C: float (NAN)> str ('a')> str ('')
A <C: float (NAN)> str ('a')> str ('1')
A <C: float (NAN)> str ('a')> str ('A')
A <C: float (NAN)> str ('a')> str ('0')
A <C: float (NAN)> str ('1')> str ('')
A <C: float (NAN)> str ('1')> str ('0')
A <C: float (NAN)> str ('A')> str ('')
A <C: float (NAN)> str ('A')> str ('1')
A <C: float (NAN)> str ('A')> str ('0')
A <C: float (NAN)> str ('0')> str ('')
A <C: str ('')> float (NAN)> str ('a')
A <C: str ('')> float (NAN)> str ('1')
A <C: str ('')> float (NAN)> str ('A')
A <C: str ('')> float (NAN)> str ('0')
A <C: str ('a')> str ('')> float (NAN)
A <C: str ('a')> str ('1')> float (NAN)
A <C: str ('a')> str ('A')> float (NAN)
A <C: str ('a')> str ('0')> float (NAN)
A <C: str ('0')> str ('')> float (NAN)
A == C: bool (verdadero)> str ('')> float (NAN)
A == C: bool (verdadero)> str ('')> float (-INF)
A == C: bool (verdadero)> str ('')> int (-1)
A == C: bool (verdadero)> str ('')> float (-1)
A == C: bool (verdadero)> matriz ()> flotante (NAN)
A == C: bool (verdadero)> matriz ()> flotante (INF)
A == C: bool (verdadero)> matriz ()> flotante (-INF)
A == C: bool (verdadero)> matriz ()> str ('a')
A == C: bool (verdadero)> matriz ()> int (1)
A == C: bool (verdadero)> matriz ()> flotante (1)
A == C: bool (verdadero)> matriz ()> str ('1')
A == C: bool (verdadero)> matriz ()> str ('A')
A == C: bool (verdadero)> matriz ()> int (-1)
A == C: bool (verdadero)> matriz ()> flotante (-1)
A == C: bool (verdadero)> int (0)> float (-INF)
A == C: bool (verdadero)> int (0)> int (-1)
A == C: bool (verdadero)> int (0)> float (-1)
A == C: bool (verdadero)> str ('0')> float (NAN)
A == C: bool (verdadero)> str ('0')> float (-INF)
A == C: bool (verdadero)> str ('0')> int (-1)
A == C: bool (verdadero)> str ('0')> float (-1)
A == C: bool (verdadero)> float (0)> float (-INF)
A == C: bool (verdadero)> float (0)> int (-1)
A == C: bool (verdadero)> flotar (0)> flotar (-1)
A == C: int (1)> str ('a')> str ('1')
A == C: int (1)> str ('A')> str ('1')
A == C: float (1)> str ('a')> str ('1')
A == C: float (1)> str ('A')> str ('1')
A == C: str ('a')> str ('1')> int (0)
A == C: str ('a')> str ('1')> float (0)
A == C: str ('')> float (-INF)> NULL (NULL)
A == C: str ('')> float (-INF)> bool (falso)
A == C: str ('')> int (-1)> NULL (NULL)
A == C: str ('')> int (-1)> bool (falso)
A == C: str ('')> float (-1)> NULL (NULL)
A == C: str ('')> float (-1)> bool (falso)
A == C: matriz ()> flotante (NAN)> NULL (NULL)
A == C: matriz ()> flotante (NAN)> bool (falso)
A == C: matriz ()> flotante (INF)> NULL (NULL)
A == C: matriz ()> flotante (INF)> bool (falso)
A == C: matriz ()> float (-INF)> NULL (NULL)
A == C: matriz ()> flotante (-INF)> bool (falso)
A == C: matriz ()> str ('a')> NULL (NULL)
A == C: matriz ()> str ('a')> bool (falso)
A == C: matriz ()> int (1)> NULL (NULL)
A == C: matriz ()> int (1)> bool (falso)
A == C: matriz ()> float (1)> NULL (NULL)
A == C: matriz ()> float (1)> bool (falso)
A == C: matriz ()> str ('1')> NULL (NULL)
A == C: matriz ()> str ('1')> bool (falso)
A == C: matriz ()> str ('A')> NULL (NULL)
A == C: matriz ()> str ('A')> bool (falso)
A == C: matriz ()> str ('0')> NULL (NULL)
A == C: matriz ()> int (-1)> NULL (NULL)
A == C: matriz ()> int (-1)> bool (falso)
A == C: matriz ()> float (-1)> NULL (NULL)
A == C: matriz ()> flotante (-1)> bool (falso)
A == C: str ('')> float (NAN)> bool (falso)
A == C: str ('')> float (NAN)> NULL (NULL)
A == C: str ('A')> str ('1')> int (0)
A == C: str ('A')> str ('1')> float (0)
A == C: int (0)> float (-INF)> NULL (NULL)
A == C: int (0)> float (-INF)> bool (falso)
A == C: int (0)> int (-1)> NULL (NULL)
A == C: int (0)> int (-1)> bool (falso)
A == C: int (0)> float (-1)> NULL (NULL)
A == C: int (0)> float (-1)> bool (falso)
A == C: str ('0')> float (NAN)> bool (falso)
A == C: str ('0')> float (-INF)> bool (falso)
A == C: str ('0')> int (-1)> bool (falso)
A == C: str ('0')> float (-1)> bool (falso)
A == C: float (0)> float (-INF)> NULL (NULL)
A == C: float (0)> float (-INF)> bool (falso)
A == C: float (0)> int (-1)> NULL (NULL)
A == C: float (0)> int (-1)> bool (falso)
A == C: float (0)> float (-1)> NULL (NULL)
A == C: float (0)> float (-1)> bool (falso)
A === C: str ('0')> float (NAN)> str ('0')
A === C: str ('')> float (NAN)> str ('')
A === C: str ('a')> float (NAN)> str ('a')
A === C: str ('1')> flotar (NAN)> str ('1')
A === C: str ('A')> float (NAN)> str ('A')
Divertida comparación de cuerdas: 'Queen' >
'King' >
'Jack' >
'Ace'
Consulte también las tablas de comparación de tipos de PHP que cubren pares:
isset()
y is_null()
if()
y empty()
- booleano
==
vs.===
Compruebe las diferencias entre las versiones de PHP en vivo en. http://3v4l.org/MAfDu .
($a > $b) !== ($b < $a)
?