Non ci sono non rigidi identici operatori di confronto ( >==
o <==
) in PHP (PHP 5.6.14 di almeno) , ma ci sono alcuni modi per far rispettare un rigoroso controllo di tipo prima di controllare maggiore / inferiore:
- Controlla entrambi i tipi di variabili con
if (gettype($a) === gettype($b))
- Forza il cast di tipo necessario, ad es.
if ((string)$a === (string)$b)
- Forza la giocoleria di tipo necessaria, ad es.
if (($a . '') === ($b . ''))
Prendi nota che:
- La precisione in virgola mobile è limitata
INF
e NAN
sono di tipo float
sottoIEEE754
- Alcuni Infinity sono uguali ad altri Infinity (da PHP 5.4)
- La notazione scientifica
e
è sempre di tipo float
e mai integer
anche se il numero è piccolo
- I numeri interi che superano
PHP_INT_MAX
vengono convertiti automaticamente infloat
- I galleggianti sui confini del sistema ottengono il
INF
valore
- Le variabili indefinite sono di tipo e valore
NULL
- I numeri interi preceduti da
0
vengono convertiti da ottale a decimale (per convenzione)
- La conversione di stringhe contenenti un intero con un interlinea
0
in un intero elimina l'interlinea0
Elenco di alcuni confronti esotici:
Molto strano:
$ a 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) false false false false false false
Uguale ma non identico:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) array () falso falso vero vero vero falso
NULL (NULL) bool (false) false false true true true false
NULL (NULL) float (0) false false true true true false
NULL (NULL) int (0) falso falso vero vero vero falso
NULL (NULL) str ('') false false true true true false
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 (true) false false true true true false
bool (true) float (1) false false true true true false
float (INF) bool (true) false false true true true false
float (NAN) bool (true) false false true true true false
bool (true) int (-1) false false true true true false
bool (true) int (1) false false true true true false
bool (true) str ("\ 0") false false true true true false
bool (true) str ('+') false false true true true false
bool (true) str ('-') false false true true true false
bool (true) str ('01 ') false false true true true false
bool (true) str ('1') false false true true true false
bool (true) str ('false') false false true true true false
str ('text') bool (true) false false true true true false
str ('true') bool (true) false false true true true false
int (0) float (0) false false true true true false
str ("\ 0") float (0) false false true true true false
str ('') float (0) false false true true true false
str ('+') float (0) false false true true true false
str ('-') float (0) false false true true true false
str ('0') float (0) false false true true true false
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) false false true true true false
float (1) str ('01 ') false false true true true false
float (1) str ('1') false false true true true false
str ("\ 0") int (0) falso falso vero vero vero falso
str ('') int (0) falso falso vero vero vero falso
str ('+') int (0) falso falso vero vero vero falso
str ('-') int (0) falso falso vero vero vero falso
int (0) str ('0') false false true true true false
str ('false') int (0) false false true true true false
str ('testo') int (0) falso falso vero vero vero falso
str ('true') int (0) false false true true true false
int (1) str ('01 ') falso falso vero vero vero falso
int (1) str ('1') falso falso vero vero vero falso
str ('1') str ('01 ') falso falso vero vero vero falso
Più basso e più grande allo stesso tempo?
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float (NAN) str ("\ 0") true true true true false false
float (NAN) str ('') true true true true false false
float (NAN) str ('+') true true true true false false
float (NAN) str ('-') true true true true false false
float (NAN) str ('0') true true true true false false
float (NAN) str ('01 ') true true true true false false
float (NAN) str ('1') true true true true false false
float (NAN) str ('false') true true true true false false
float (NAN) str ('text') true true true true false false
float (NAN) str ('true') true true true true false false
Uguale E identico:
$ a 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
Minore o Maggiore:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) bool (true) false true true false false false
float (-INF) NULL (NULL) vero falso falso vero falso falso
NULL (NULL) float (1) false true true false false false
float (INF) NULL (NULL) vero falso falso vero falso falso
float (NAN) NULL (NULL) vero falso falso vero falso falso
NULL (NULL) int (-1) falso vero vero falso falso falso
NULL (NULL) int (1) falso vero vero falso falso falso
NULL (NULL) str ("\ 0") falso vero vero falso falso falso
NULL (NULL) str ('+') false true true false false false
NULL (NULL) str ('-') false true true false false false
NULL (NULL) str ('0') false true true false false false
NULL (NULL) str ('01 ') false true true false false false
NULL (NULL) str ('1') falso vero vero falso falso falso
NULL (NULL) str ('false') false true true false false false
NULL (NULL) str ('text') false true true false false false
NULL (NULL) str ('true') false true true false false false
array () bool (true) false true true false false false
float (-INF) array () false true true false false false
array () float (0) vero falso falso vero falso falso
array () float (1) vero falso falso vero falso falso
float (INF) array () false true true false false false
float (NAN) array () false true true false false false
array () int (-1) vero falso falso vero falso falso
array () int (0) vero falso falso vero falso falso
array () int (1) vero falso falso vero falso falso
array () str ("\ 0") vero falso falso vero falso falso
str ('') array () false true true false false false
array () str ('+') true false false true false false
array () str ('-') true false false true false false
array () str ('0') vero falso falso vero falso falso
array () str ('01 ') vero falso falso vero falso falso
array () str ('1') vero falso falso vero falso falso
array () str ('false') true false false true false false
array () str ('text') true false false true false false
array () str ('true') vero falso falso vero falso falso
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) falso vero vero falso falso falso
int (1) bool (false) vero falso falso vero falso falso
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) vero falso falso vero falso falso
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 (true) float (0) true false false true false false
bool (true) int (0) true false false true false false
str ('') bool (true) false true true false false false
bool (true) str ('0') true false false true false false
float (-INF) float (0) false true true false false false
float (-INF) float (1) false true true false false false
float (INF) float (-INF) true false false true false false
float (-INF) int (-1) false true true false false false
float (-INF) int (0) false true true false false false
float (-INF) int (1) false true true false false false
float (-INF) str ("\ 0") false true true false false false
float (-INF) str ('') false true true false false false
float (-INF) str ('+') false true true false false false
float (-INF) str ('-') false true true false false false
float (-INF) str ('0') false true true false false false
float (-INF) str ('01 ') false true true false false false
float (-INF) str ('1') false true true false false false
float (-INF) str ('false') false true true false false false
float (-INF) str ('text') false true true false false false
float (-INF) str ('true') false true true false false false
float (1) float (0) true false false true false false
float (INF) float (0) true false false true false false
float (0) int (-1) vero falso falso vero falso falso
int (1) float (0) vero falso falso vero falso falso
float (0) str ('01 ') false true true false false false
str ('1') float (0) true false false true false false
float (INF) float (1) true false false true false false
float (1) int (-1) vero falso falso vero falso falso
float (1) int (0) vero falso falso vero falso falso
float (1) str ("\ 0") vero falso falso vero falso falso
str ('') float (1) false true true false false false
float (1) str ('+') true false false true false false
float (1) str ('-') true false false true false false
float (1) str ('0') true false false true false false
float (1) str ('false') true false false true false false
str ('text') float (1) false true true false false false
str ('true') float (1) false true true false false false
float (INF) int (-1) vero falso falso vero falso falso
float (INF) int (0) vero falso falso vero falso falso
float (INF) int (1) vero falso falso vero falso falso
float (INF) str ("\ 0") vero falso falso vero falso falso
float (INF) str ('') true false false true false false
float (INF) str ('+') true false false true false false
float (INF) str ('-') true false false true false false
float (INF) str ('0') true false false true false false
float (INF) str ('01 ') true false false true false false
float (INF) str ('1') true false false true false false
float (INF) str ('false') true false false true false false
float (INF) str ('text') true false false true false false
float (INF) str ('true') true false false true false false
int (0) int (-1) vero falso falso vero falso falso
int (1) int (-1) vero falso falso vero falso falso
str ("\ 0") int (-1) vero falso falso vero falso falso
str ('') int (-1) vero falso falso vero falso falso
str ('+') int (-1) vero falso falso vero falso falso
str ('-') int (-1) vero falso falso vero falso falso
str ('0') int (-1) vero falso falso vero falso falso
int (-1) str ('01 ') falso vero vero falso falso falso
str ('1') int (-1) vero falso falso vero falso falso
str ('false') int (-1) true false false true false false
str ('testo') int (-1) vero falso falso vero falso falso
str ('true') int (-1) true false false true false false
int (1) int (0) vero falso falso vero falso falso
int (0) str ('01 ') falso vero vero falso falso falso
str ('1') int (0) vero falso falso vero falso falso
int (1) str ("\ 0") vero falso falso vero falso falso
str ('') int (1) falso vero vero falso falso falso
int (1) str ('+') vero falso falso vero falso falso
int (1) str ('-') vero falso falso vero falso falso
int (1) str ('0') vero falso falso vero falso falso
int (1) str ('false') true false false true false false
str ('testo') int (1) falso vero vero falso falso falso
str ('true') int (1) falso vero vero falso falso falso
str ('') str ("\ 0") falso vero vero falso falso falso
str ('+') str ("\ 0") vero falso falso vero falso falso
str ('-') str ("\ 0") vero falso falso vero falso falso
str ("\ 0") str ('0') falso vero vero falso falso falso
str ("\ 0") str ('01 ') falso vero vero falso falso falso
str ('1') str ("\ 0") vero falso falso vero falso falso
str ('false') str ("\ 0") true false false true false false
str ('testo') str ("\ 0") vero falso falso vero falso falso
str ('true') str ("\ 0") true false false true false false
str ('') str ('+') false true true false false false
str ('') str ('-') false true true false false false
str ('') str ('0') falso vero vero falso falso falso
str ('') str ('01 ') falso vero vero falso falso falso
str ('') str ('1') falso vero vero falso falso falso
str ('') str ('false') false true true false false false
str ('') str ('text') false true true false false false
str ('') str ('true') false true true false false false
str ('-') str ('+') vero falso falso vero falso falso
str ('+') str ('0') falso vero vero falso falso falso
str ('+') str ('01 ') falso vero vero falso falso falso
str ('1') str ('+') vero falso falso vero falso falso
str ('false') str ('+') true false false true false false
str ('text') str ('+') true false false true false false
str ('true') str ('+') true false false true false false
str ('-') str ('0') falso vero vero falso falso falso
str ('-') str ('01 ') falso vero vero falso falso falso
str ('1') str ('-') vero falso falso vero falso falso
str ('false') str ('-') true false false true false false
str ('text') str ('-') true false false true false false
str ('true') str ('-') true false false true false false
str ('0') str ('01 ') falso vero vero falso falso falso
str ('1') str ('0') vero falso falso vero falso falso
str ('false') str ('0') true false false true false false
str ('text') str ('0') true false false true false false
str ('true') str ('0') true false false true false false
str ('false') str ('01 ') true false false true false false
str ('text') str ('01 ') true false false true false false
str ('true') str ('01 ') true false false true false false
str ('1') str ('false') false true true false false false
str ('text') str ('1') true false false true false false
str ('true') str ('1') true false false true false false
str ('text') str ('false') true false false true false false
str ('true') str ('false') true false false true false false
str ('true') str ('text') true false false true false false
$a > $b > $c
Enigma quando: $a
non è maggiore di $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 (true)> str ('')> float (NAN)
A == C: bool (true)> str ('')> float (-INF)
A == C: bool (true)> str ('')> int (-1)
A == C: bool (true)> str ('')> float (-1)
A == C: bool (true)> array ()> float (NAN)
A == C: bool (true)> array ()> float (INF)
A == C: bool (true)> array ()> float (-INF)
A == C: bool (true)> array ()> str ('a')
A == C: bool (true)> array ()> int (1)
A == C: bool (true)> array ()> float (1)
A == C: bool (true)> array ()> str ('1')
A == C: bool (true)> array ()> str ('A')
A == C: bool (true)> array ()> int (-1)
A == C: bool (true)> array ()> float (-1)
A == C: bool (true)> int (0)> float (-INF)
A == C: bool (true)> int (0)> int (-1)
A == C: bool (true)> int (0)> float (-1)
A == C: bool (true)> str ('0')> float (NAN)
A == C: bool (true)> str ('0')> float (-INF)
A == C: bool (true)> str ('0')> int (-1)
A == C: bool (true)> str ('0')> float (-1)
A == C: bool (true)> float (0)> float (-INF)
A == C: bool (true)> float (0)> int (-1)
A == C: bool (true)> float (0)> float (-1)
A == C: int (1)> str ('a')> str ('1')
LA == DO: int (1)> str ('LA')> 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 (false)
A == C: str ('')> int (-1)> NULL (NULL)
A == C: str ('')> int (-1)> bool (false)
A == C: str ('')> float (-1)> NULL (NULL)
A == C: str ('')> float (-1)> bool (false)
A == C: array ()> float (NAN)> NULL (NULL)
A == C: array ()> float (NAN)> bool (false)
A == C: array ()> float (INF)> NULL (NULL)
A == C: array ()> float (INF)> bool (false)
A == C: array ()> float (-INF)> NULL (NULL)
A == C: array ()> float (-INF)> bool (false)
A == C: array ()> str ('a')> NULL (NULL)
A == C: array ()> str ('a')> bool (false)
A == C: array ()> int (1)> NULL (NULL)
A == C: array ()> int (1)> bool (false)
A == C: array ()> float (1)> NULL (NULL)
A == C: array ()> float (1)> bool (false)
A == C: array ()> str ('1')> NULL (NULL)
A == C: array ()> str ('1')> bool (false)
A == C: array ()> str ('A')> NULL (NULL)
A == C: array ()> str ('A')> bool (false)
A == C: array ()> str ('0')> NULL (NULL)
A == C: array ()> int (-1)> NULL (NULL)
A == C: array ()> int (-1)> bool (false)
A == C: array ()> float (-1)> NULL (NULL)
A == C: array ()> float (-1)> bool (false)
A == C: str ('')> float (NAN)> bool (false)
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 (false)
A == C: int (0)> int (-1)> NULL (NULL)
A == C: int (0)> int (-1)> bool (false)
A == C: int (0)> float (-1)> NULL (NULL)
A == C: int (0)> float (-1)> bool (false)
A == C: str ('0')> float (NAN)> bool (false)
A == C: str ('0')> float (-INF)> bool (false)
A == C: str ('0')> int (-1)> bool (false)
A == C: str ('0')> float (-1)> bool (false)
A == C: float (0)> float (-INF)> NULL (NULL)
A == C: float (0)> float (-INF)> bool (false)
A == C: float (0)> int (-1)> NULL (NULL)
A == C: float (0)> int (-1)> bool (false)
A == C: float (0)> float (-1)> NULL (NULL)
A == C: float (0)> float (-1)> bool (false)
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')
Divertente confronto delle stringhe: 'Regina' >
'Re' >
'Jack' >
'Asso'
Controlla anche le tabelle di confronto dei tipi PHP che coprono le coppie:
isset()
e is_null()
if()
e empty()
- booleano
==
vs.===
Controlla le differenze tra le versioni PHP in diretta su. http://3v4l.org/MAfDu .
($a > $b) !== ($b < $a)
?