Сравнение типов данных в PHP

Сравнение различных типов $variable и результаты функций PHP
Выражение gettype() empty() is_null() isset() boolean : if($variable)
$variable = ''; string TRUE FALSE TRUE FALSE
$variable = null; NULL TRUE TRUE FALSE FALSE
var $variable; NULL TRUE TRUE FALSE FALSE
// $variable не определена NULL TRUE TRUE FALSE FALSE
$variable = array(); array TRUE FALSE TRUE FALSE
$variable = array('x', 'y'); array FALSE FALSE TRUE TRUE
$variable = false; boolean TRUE FALSE TRUE FALSE
$variable = true; boolean FALSE FALSE TRUE TRUE
$variable = 1; integer FALSE FALSE TRUE TRUE
$variable = 42; integer FALSE FALSE TRUE TRUE
$variable = 0; integer TRUE FALSE TRUE FALSE
$variable = -1; integer FALSE FALSE TRUE TRUE
$variable = '1'; string FALSE FALSE TRUE TRUE
$variable = "0"; string TRUE FALSE TRUE FALSE
$variable = '-1'; string FALSE FALSE TRUE TRUE
$variable = 'txt'; string FALSE FALSE TRUE TRUE
$variable = 'true'; string FALSE FALSE TRUE TRUE
$variable = 'false'; string FALSE FALSE TRUE TRUE


Гибкое сравнение разных типов с помощью ==

== TRUE FALSE 1 0 -1 '1' '0' '-1' NULL array() 'txt' ''
TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE
FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE
1 TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
0 FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE TRUE
-1 TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
'1' TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
'0' FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
'-1' TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
NULL FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE
array() FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE
'txt' TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
'' FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE


Жесткое сравнение различных типов с помощью ===

=== TRUE FALSE 1 0 -1 '1' '0' '-1' NULL array() 'txt' ''
TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
1 FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
0 FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
-1 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
'1' FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
'0' FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
'-1' FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
NULL FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
array() FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
'txt' FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
'' FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE

p.s. Очень познавательная статья о сравнении в PHP на хабре с наглядными примерами, о том почему нужно быть внимательным к сравнению различных типов.


<em>var_dump((null=='')); //bool(true)
var_dump((null==='')); //bool(false)
var_dump((null!=='')); //bool(true)
var_dump(((bool)null==false)); //bool(true)
var_dump(((bool)null===false)); //bool(true)
var_dump(((bool)((string)'test')===true)); //bool(true)
var_dump(((bool)((string)'-10')===true)); //bool(true)
var_dump(((bool)((int)'-10')===true)); //bool(true)
var_dump(((bool)((int)[])===true)); //bool(false)
var_dump(((bool)((int)['' => ''])===true)); //bool(true)
var_dump(((bool)((int)'1'.'2')===true)); //bool(true)
var_dump(((bool)((int)1+2.2)===true)); //bool(true)
</em>
var_dump(''); // string(0) ""
var_dump((int)''); // int(0) число из пустой строки - 0
var_dump((bool)''); // bool(false) пустая строка - лож
var_dump((bool)(int)''); // bool(false) пустую строку в число - 0 -> число 0 в boolean - лож

var_dump('null'); // string(4) "null"
var_dump((bool)'null'); // bool(true) не пустая строка - истина
var_dump((int)'null'); // int(0) не пустая строка без числа в начале - 0
var_dump((int)'1null'); // int(0) не пустая строка с числом в начале - 1

var_dump((bool)(unset)true); // bool(false) истина -> null -> в boolean - лож

php true == comparison === variable false

просмотров: 1956