Il n'y a pas d' opérateurs de comparaison strictement identiques ( >==
ou <==
) en PHP (par PHP 5.6.14 au moins) , mais il existe plusieurs façons d' imposer une vérification de type stricte avant de vérifier Greater / Lower:
- Vérifiez les deux types de variables avec
if (gettype($a) === gettype($b))
- Forcez votre type de fonte nécessaire, par exemple.
if ((string)$a === (string)$b)
- Forcez votre jongle de type nécessaire, par exemple.
if (($a . '') === ($b . ''))
Prenez note que:
- La précision en virgule flottante est limitée
INF
et NAN
sont de type float
sousieee754
- Certains Infinity équivalent à d'autres Infinity (depuis PHP 5.4)
- La notation scientifique
e
est toujours de type float
, et jamais integer
même si le nombre est petit
- Les entiers qui dépassent
PHP_INT_MAX
sont automatiquement convertis enfloat
- Les flottants au-dessus des limites du système obtiennent la
INF
valeur
- Les variables non définies sont de type et de valeur
NULL
- Les entiers précédés de
0
sont convertis d'octal en décimal (par convention)
- La conversion de chaînes contenant un entier avec un début
0
en entier supprime le début0
Liste de quelques comparaisons exotiques:
Très étrange:
$ un VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float (NAN) float (-INF) false false false false false false
float (NAN) float (0) false false false false false false
float (NAN) float (1) false false false false false false
float (NAN) float (INF) false false false false false false
float (NAN) float (NAN) false false false false false false
float (NAN) int (-1) false false false false false false
float (NAN) int (0) false false false false false false
float (NAN) int (1) faux faux faux faux faux faux
Égal mais pas identique:
$ un VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) array () false false true true true false
NULL (NULL) bool (false) false false true true true false
NULL (NULL) float (0) false false true true true false
NULL (NULL) int (0) faux faux vrai vrai vrai faux
NULL (NULL) str ('') faux faux vrai vrai vrai faux
array () bool (false) false false true true true false
bool (false) float (0) false false true true true false
bool (false) int (0) false false true true true false
str ('') bool (false) false false true true true false
bool (false) str ('0') false false true true true false
float (-INF) bool (vrai) faux faux vrai vrai vrai faux
bool (vrai) float (1) faux faux vrai vrai vrai faux
float (INF) bool (vrai) faux faux vrai vrai vrai faux
float (NAN) bool (vrai) faux faux vrai vrai vrai faux
bool (vrai) int (-1) faux faux vrai vrai vrai faux
bool (vrai) int (1) faux faux vrai vrai vrai faux
bool (true) str ("\ 0") false false true true true false
bool (vrai) str ('+') faux faux vrai vrai vrai faux
bool (vrai) str ('-') faux faux vrai vrai vrai faux
bool (vrai) str ('01 ') faux faux vrai vrai vrai faux
bool (vrai) str ('1') faux faux vrai vrai vrai faux
bool (true) str ('false') false false true true true false
str ('text') bool (vrai) faux faux vrai vrai vrai faux
str ('vrai') bool (vrai) faux faux vrai vrai vrai faux
int (0) float (0) faux faux vrai vrai vrai faux
str ("\ 0") float (0) false false true true true false
str ('') float (0) faux faux vrai vrai vrai faux
str ('+') float (0) faux faux vrai vrai vrai faux
str ('-') float (0) faux faux vrai vrai vrai faux
str ('0') float (0) faux faux vrai vrai vrai faux
str ('false') float (0) false false true true true false
str ('text') float (0) false false true true true false
str ('true') float (0) false false true true true false
int (1) float (1) faux faux vrai vrai vrai faux
float (1) str ('01 ') faux faux vrai vrai vrai faux
float (1) str ('1') faux faux vrai vrai vrai faux
str ("\ 0") int (0) faux faux vrai vrai vrai faux
str ('') int (0) faux faux vrai vrai vrai faux
str ('+') int (0) faux faux vrai vrai vrai faux
str ('-') int (0) faux faux vrai vrai vrai faux
int (0) str ('0') faux faux vrai vrai vrai faux
str ('false') int (0) false false true true true false
str ('text') int (0) faux faux vrai vrai vrai faux
str ('vrai') int (0) faux faux vrai vrai vrai faux
int (1) str ('01 ') faux faux vrai vrai vrai faux
int (1) str ('1') faux faux vrai vrai vrai faux
str ('1') str ('01 ') faux faux vrai vrai vrai faux
Plus bas et plus grand en même temps?
$ un VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float (NAN) str ("\ 0") vrai vrai vrai vrai faux faux
float (NAN) str ('') vrai vrai vrai vrai faux faux
float (NAN) str ('+') vrai vrai vrai vrai faux faux
float (NAN) str ('-') vrai vrai vrai vrai faux faux
float (NAN) str ('0') vrai vrai vrai vrai faux faux
float (NAN) str ('01 ') vrai vrai vrai vrai faux faux
float (NAN) str ('1') vrai vrai vrai vrai faux faux
float (NAN) str ('false') true true true true false false
float (NAN) str ('text') vrai vrai vrai vrai faux faux
float (NAN) str ('vrai') vrai vrai vrai vrai faux faux
Égal ET identique:
$ un VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) NULL (NULL) false false true true true true
float (-INF) float (-INF) false false true true true true
float (INF) float (INF) false false true true true true
Inférieur ou supérieur:
$ un VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) bool (vrai) faux vrai vrai faux faux faux
float (-INF) NULL (NULL) vrai faux faux vrai faux faux
NULL (NULL) float (1) faux vrai vrai faux faux faux
float (INF) NULL (NULL) vrai faux faux vrai faux faux
float (NAN) NULL (NULL) vrai faux faux vrai faux faux
NULL (NULL) int (-1) faux vrai vrai faux faux faux
NULL (NULL) int (1) faux vrai vrai faux faux faux
NULL (NULL) str ("\ 0") false true true false false false
NULL (NULL) str ('+') faux vrai vrai faux faux faux
NULL (NULL) str ('-') faux vrai vrai faux faux faux
NULL (NULL) str ('0') faux vrai vrai faux faux faux
NULL (NULL) str ('01 ') faux vrai vrai faux faux faux
NULL (NULL) str ('1') faux vrai vrai faux faux faux
NULL (NULL) str ('false') false true true false false false
NULL (NULL) str ('texte') faux vrai vrai faux faux faux
NULL (NULL) str ('vrai') faux vrai vrai faux faux faux
array () bool (vrai) faux vrai vrai faux faux faux
float (-INF) array () faux vrai vrai faux faux faux
array () float (0) vrai faux faux vrai faux faux
array () float (1) vrai faux faux vrai faux faux
float (INF) array () faux vrai vrai faux faux faux
float (NAN) array () false true true false false false
array () int (-1) vrai faux faux vrai faux faux
array () int (0) vrai faux faux vrai faux faux
array () int (1) vrai faux faux vrai faux faux
array () str ("\ 0") vrai faux faux vrai faux faux
str ('') array () faux vrai vrai faux faux faux
array () str ('+') vrai faux faux vrai faux faux
array () str ('-') vrai faux faux vrai faux faux
array () str ('0') vrai faux faux vrai faux faux
array () str ('01 ') vrai faux faux vrai faux faux
array () str ('1') vrai faux faux vrai faux faux
array () str ('false') true false false true false false
array () str ('text') vrai faux faux vrai faux faux
array () str ('vrai') vrai faux faux vrai faux faux
bool (true) bool (false) true false false true false false
float (-INF) bool (false) true false false true false false
float (1) bool (false) true false false true false false
float (INF) bool (false) true false false true false false
float (NAN) bool (false) true false false true false false
bool (false) int (-1) false true true false false false
int (1) bool (faux) vrai faux faux vrai faux faux
bool (false) str ("\ 0") false true true false false false
bool (false) str ('+') false true true false false false
bool (false) str ('-') false true true false false false
bool (false) str ('01 ') false true true false false false
str ('1') bool (false) true false false true false false
bool (false) str ('false') false true true false false false
str ('text') bool (false) true false false true false false
str ('true') bool (false) true false false true false false
bool (vrai) float (0) vrai faux faux vrai faux faux
bool (vrai) int (0) vrai faux faux vrai faux faux
str ('') bool (vrai) faux vrai vrai faux faux faux
bool (vrai) str ('0') vrai faux faux vrai faux faux
float (-INF) float (0) faux vrai vrai faux faux faux
float (-INF) float (1) faux vrai vrai faux faux faux
float (INF) float (-INF) true false false true false false
float (-INF) int (-1) faux vrai vrai faux faux faux
float (-INF) int (0) faux vrai vrai faux faux faux
float (-INF) int (1) faux vrai vrai faux faux faux
float (-INF) str ("\ 0") false true true false false false
float (-INF) str ('') faux vrai vrai faux faux faux
float (-INF) str ('+') faux vrai vrai faux faux faux
float (-INF) str ('-') faux vrai vrai faux faux faux
float (-INF) str ('0') faux vrai vrai faux faux faux
float (-INF) str ('01 ') faux vrai vrai faux faux faux
float (-INF) str ('1') faux vrai vrai faux faux faux
float (-INF) str ('false') false true true false false false
float (-INF) str ('texte') faux vrai vrai faux faux faux
float (-INF) str ('vrai') faux vrai vrai faux faux faux
float (1) float (0) vrai faux faux vrai faux faux
float (INF) float (0) vrai faux faux vrai faux faux
float (0) int (-1) vrai faux faux vrai faux faux
int (1) float (0) vrai faux faux vrai faux faux
float (0) str ('01 ') faux vrai vrai faux faux faux
str ('1') float (0) vrai faux faux vrai faux faux
float (INF) float (1) vrai faux faux vrai faux faux
float (1) int (-1) vrai faux faux vrai faux faux
float (1) int (0) vrai faux faux vrai faux faux
float (1) str ("\ 0") vrai faux faux vrai faux faux
str ('') float (1) faux vrai vrai faux faux faux
float (1) str ('+') vrai faux faux vrai faux faux
float (1) str ('-') vrai faux faux vrai faux faux
float (1) str ('0') vrai faux faux vrai faux faux
float (1) str ('false') true false false true false false
str ('text') float (1) faux vrai vrai faux faux faux
str ('vrai') float (1) faux vrai vrai faux faux faux
float (INF) int (-1) vrai faux faux vrai faux faux
float (INF) int (0) vrai faux faux vrai faux faux
float (INF) int (1) vrai faux faux vrai faux faux
float (INF) str ("\ 0") true false false true false false
float (INF) str ('') vrai faux faux vrai faux faux
float (INF) str ('+') vrai faux faux vrai faux faux
float (INF) str ('-') vrai faux faux vrai faux faux
float (INF) str ('0') vrai faux faux vrai faux faux
float (INF) str ('01 ') vrai faux faux vrai faux faux
float (INF) str ('1') vrai faux faux vrai faux faux
float (INF) str ('false') true false false true false false
float (INF) str ('texte') vrai faux faux vrai faux faux
float (INF) str ('vrai') vrai faux faux vrai faux faux
int (0) int (-1) vrai faux faux vrai faux faux
int (1) int (-1) vrai faux faux vrai faux faux
str ("\ 0") int (-1) vrai faux faux vrai faux faux
str ('') int (-1) vrai faux faux vrai faux faux
str ('+') int (-1) vrai faux faux vrai faux faux
str ('-') int (-1) vrai faux faux vrai faux faux
str ('0') int (-1) vrai faux faux vrai faux faux
int (-1) str ('01 ') faux vrai vrai faux faux faux
str ('1') int (-1) vrai faux faux vrai faux faux
str ('false') int (-1) vrai faux faux vrai faux faux
str ('text') int (-1) vrai faux faux vrai faux faux
str ('vrai') int (-1) vrai faux faux vrai faux faux
int (1) int (0) vrai faux faux vrai faux faux
int (0) str ('01 ') faux vrai vrai faux faux faux
str ('1') int (0) vrai faux faux vrai faux faux
int (1) str ("\ 0") vrai faux faux vrai faux faux
str ('') int (1) faux vrai vrai faux faux faux
int (1) str ('+') vrai faux faux vrai faux faux
int (1) str ('-') vrai faux faux vrai faux faux
int (1) str ('0') vrai faux faux vrai faux faux
int (1) str ('faux') vrai faux faux vrai faux faux
str ('text') int (1) faux vrai vrai faux faux faux
str ('vrai') int (1) faux vrai vrai faux faux faux
str ('') str ("\ 0") faux vrai vrai faux faux faux
str ('+') str ("\ 0") vrai faux faux vrai faux faux
str ('-') str ("\ 0") vrai faux faux vrai faux faux
str ("\ 0") str ('0') faux vrai vrai faux faux faux
str ("\ 0") str ('01 ') faux vrai vrai faux faux faux
str ('1') str ("\ 0") vrai faux faux vrai faux faux
str ('false') str ("\ 0") true false false true false false
str ('text') str ("\ 0") vrai faux faux vrai faux faux
str ('true') str ("\ 0") true false false true false false
str ('') str ('+') faux vrai vrai faux faux faux
str ('') str ('-') faux vrai vrai faux faux faux
str ('') str ('0') faux vrai vrai faux faux faux
str ('') str ('01 ') faux vrai vrai faux faux faux
str ('') str ('1') faux vrai vrai faux faux faux
str ('') str ('false') faux vrai vrai faux faux faux
str ('') str ('text') faux vrai vrai faux faux faux
str ('') str ('vrai') faux vrai vrai faux faux faux
str ('-') str ('+') vrai faux faux vrai faux faux
str ('+') str ('0') faux vrai vrai faux faux faux
str ('+') str ('01 ') faux vrai vrai faux faux faux
str ('1') str ('+') vrai faux faux vrai faux faux
str ('false') str ('+') vrai faux faux vrai faux faux
str ('texte') str ('+') vrai faux faux vrai faux faux
str ('vrai') str ('+') vrai faux faux vrai faux faux
str ('-') str ('0') faux vrai vrai faux faux faux
str ('-') str ('01 ') faux vrai vrai faux faux faux
str ('1') str ('-') vrai faux faux vrai faux faux
str ('false') str ('-') vrai faux faux vrai faux faux
str ('texte') str ('-') vrai faux faux vrai faux faux
str ('vrai') str ('-') vrai faux faux vrai faux faux
str ('0') str ('01 ') faux vrai vrai faux faux faux
str ('1') str ('0') vrai faux faux vrai faux faux
str ('false') str ('0') true false false true false false
str ('texte') str ('0') vrai faux faux vrai faux faux
str ('vrai') str ('0') vrai faux faux vrai faux faux
str ('false') str ('01 ') vrai faux faux vrai faux faux
str ('text') str ('01 ') vrai faux faux vrai faux faux
str ('vrai') str ('01 ') vrai faux faux vrai faux faux
str ('1') str ('false') false true true false false false
str ('texte') str ('1') vrai faux faux vrai faux faux
str ('vrai') str ('1') vrai faux faux vrai faux faux
str ('text') str ('false') true false false true false false
str ('vrai') str ('faux') vrai faux faux vrai faux faux
str ('vrai') str ('texte') vrai faux faux vrai faux faux
$a > $b > $c
Énigme quand: $a
n'est pas supérieur à $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 (vrai)> str ('')> float (NAN)
A == C: bool (vrai)> str ('')> float (-INF)
A == C: bool (vrai)> str ('')> int (-1)
A == C: bool (vrai)> str ('')> float (-1)
A == C: bool (vrai)> array ()> float (NAN)
A == C: bool (true)> array ()> float (INF)
A == C: bool (true)> array ()> float (-INF)
A == C: bool (vrai)> array ()> str ('a')
A == C: bool (vrai)> tableau ()> int (1)
A == C: bool (vrai)> array ()> float (1)
A == C: bool (vrai)> array ()> str ('1')
A == C: bool (vrai)> tableau ()> str ('A')
A == C: bool (vrai)> tableau ()> int (-1)
A == C: bool (vrai)> array ()> float (-1)
A == C: bool (vrai)> int (0)> float (-INF)
A == C: bool (vrai)> int (0)> int (-1)
A == C: bool (vrai)> int (0)> float (-1)
A == C: bool (vrai)> str ('0')> float (NAN)
A == C: bool (vrai)> str ('0')> float (-INF)
A == C: bool (vrai)> str ('0')> int (-1)
A == C: bool (vrai)> str ('0')> float (-1)
A == C: bool (true)> float (0)> float (-INF)
A == C: bool (vrai)> float (0)> int (-1)
A == C: bool (vrai)> float (0)> float (-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 (faux)
A == C: str ('')> int (-1)> NULL (NULL)
A == C: str ('')> int (-1)> bool (faux)
A == C: str ('')> float (-1)> NULL (NULL)
A == C: str ('')> float (-1)> bool (faux)
A == C: array ()> float (NAN)> NULL (NULL)
A == C: array ()> float (NAN)> bool (faux)
A == C: array ()> float (INF)> NULL (NULL)
A == C: array ()> float (INF)> bool (faux)
A == C: tableau ()> float (-INF)> NULL (NULL)
A == C: tableau ()> float (-INF)> bool (faux)
A == C: array ()> str ('a')> NULL (NULL)
A == C: array ()> str ('a')> bool (faux)
A == C: tableau ()> int (1)> NULL (NULL)
A == C: tableau ()> int (1)> bool (faux)
A == C: tableau ()> float (1)> NULL (NULL)
A == C: array ()> float (1)> bool (faux)
A == C: tableau ()> str ('1')> NULL (NULL)
A == C: array ()> str ('1')> bool (faux)
A == C: tableau ()> str ('A')> NULL (NULL)
A == C: tableau ()> str ('A')> bool (faux)
A == C: array ()> str ('0')> NULL (NULL)
A == C: tableau ()> int (-1)> NULL (NULL)
A == C: tableau ()> int (-1)> bool (faux)
A == C: tableau ()> float (-1)> NULL (NULL)
A == C: array ()> float (-1)> bool (faux)
A == C: str ('')> float (NAN)> bool (faux)
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 (faux)
A == C: int (0)> int (-1)> NULL (NULL)
A == C: int (0)> int (-1)> bool (faux)
A == C: int (0)> float (-1)> NULL (NULL)
A == C: int (0)> float (-1)> bool (faux)
A == C: str ('0')> float (NAN)> bool (faux)
A == C: str ('0')> float (-INF)> bool (faux)
A == C: str ('0')> int (-1)> bool (faux)
A == C: str ('0')> float (-1)> bool (faux)
A == C: float (0)> float (-INF)> NULL (NULL)
A == C: float (0)> float (-INF)> bool (faux)
A == C: float (0)> int (-1)> NULL (NULL)
A == C: float (0)> int (-1)> bool (faux)
A == C: float (0)> float (-1)> NULL (NULL)
A == C: float (0)> float (-1)> bool (faux)
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')> float (NAN)> str ('1')
A === C: str ('A')> float (NAN)> str ('A')
Comparaison de cordes amusante: 'Queen' >
'King' >
'Jack' >
'Ace'
Consultez également les tableaux de comparaison des types PHP couvrant les paires:
isset()
et is_null()
if()
et empty()
- booléen
==
vs.===
Vérifiez les différences entre les versions de PHP en direct sur. http://3v4l.org/MAfDu .
($a > $b) !== ($b < $a)
?