<?php
class Foo { public $bar; }
$foo = new Foo;
$baz = array();
$blanks = array(
"string(empty) \"\"" => "",
"string(space) \" \"" => " ",
"bool(false)" => FALSE,
"bool(true)" => TRUE,
"array(empty) {}" => array(),
"array(1) { [\"empty_item\"] }" => $baz["qux"],
"NULL" => NULL,
"string(\"zero\") \"0\"" => "0",
"int(0)" => 0,
"float(0.0)" => 0.0,
"object(stdClass)# (empty) {}" => new stdClass,
"public \$bar; (unassigned)" => $foo->bar,
"string(null byte) \"\\0\"" => "\0"
);
$headings = array(
'type',
'if',
#'isset',
'empty',
'is_null',
'== null',
#'=== null',
'== ""',
'=== ""',
"!",
);
foreach(array($headings, array_keys($blanks)) as $ord => $arr){
foreach($arr as $val){
static $max = 0;
if(strlen($val) > $max){ $max = strlen($val); }
}
${"pad_$ord"} = $max;
}
for($i = 0; $i < 2; $i++){
foreach($headings as $j => $heading){
if($i == 0){
echo str_pad($heading, $j == 0 ? $pad_1 : $pad_0), " | ";
} else {
echo str_pad("", $j == 0 ? $pad_1 : $pad_0, "-"), "-+-";
}
}
echo "\n";
}
$true = str_pad("TRUE", $pad_0) . " | ";
$false = str_pad("", $pad_0) . " | ";
foreach($blanks as $readable => $blank){
echo str_pad($readable, $pad_1), " | ";
echo $blank ? $true : $false;
#echo isset($blank) ? $true : $false;
echo empty($blank) ? $true : $false;
echo is_null($blank) ? $true : $false;
echo $blank == null ? $true : $false;
#echo $blank === null ? $true : $false;
echo $blank == "" ? $true : $false;
echo $blank === "" ? $true : $false;
echo !$blank ? $true : $false;
echo "\n";
}
echo "\n\n", '# Note: ', "\n";
echo '`!isset()`, `is_null()` and `=== null` are functionaly equivalent.', "\n";
echo '`!` and `empty()` are functionaly equivalent.', "\n";
- Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- Warning: Undefined array key "qux" in /in/fvItX on line 12
type | if | empty | is_null | == null | == "" | === "" | ! |
-----------------------------+---------+---------+---------+---------+---------+---------+---------+-
string(empty) "" | | TRUE | | TRUE | TRUE | TRUE | TRUE |
string(space) " " | TRUE | | | | | | |
bool(false) | | TRUE | | TRUE | TRUE | | TRUE |
bool(true) | TRUE | | | | | | |
array(empty) {} | | TRUE | | TRUE | | | TRUE |
array(1) { ["empty_item"] } | | TRUE | TRUE | TRUE | TRUE | | TRUE |
NULL | | TRUE | TRUE | TRUE | TRUE | | TRUE |
string("zero") "0" | | TRUE | | | | | TRUE |
int(0) | | TRUE | | TRUE | | | TRUE |
float(0.0) | | TRUE | | TRUE | | | TRUE |
object(stdClass)# (empty) {} | TRUE | | | | | | |
public $bar; (unassigned) | | TRUE | TRUE | TRUE | TRUE | | TRUE |
string(null byte) "\0" | TRUE | | | | | | |
# Note:
`!isset()`, `is_null()` and `=== null` are functionaly equivalent.
`!` and `empty()` are functionaly equivalent.
- Output for 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.31, 7.4.0 - 7.4.33
- Notice: Undefined index: qux in /in/fvItX on line 12
type | if | empty | is_null | == null | == "" | === "" | ! |
-----------------------------+---------+---------+---------+---------+---------+---------+---------+-
string(empty) "" | | TRUE | | TRUE | TRUE | TRUE | TRUE |
string(space) " " | TRUE | | | | | | |
bool(false) | | TRUE | | TRUE | TRUE | | TRUE |
bool(true) | TRUE | | | | | | |
array(empty) {} | | TRUE | | TRUE | | | TRUE |
array(1) { ["empty_item"] } | | TRUE | TRUE | TRUE | TRUE | | TRUE |
NULL | | TRUE | TRUE | TRUE | TRUE | | TRUE |
string("zero") "0" | | TRUE | | | | | TRUE |
int(0) | | TRUE | | TRUE | TRUE | | TRUE |
float(0.0) | | TRUE | | TRUE | TRUE | | TRUE |
object(stdClass)# (empty) {} | TRUE | | | | | | |
public $bar; (unassigned) | | TRUE | TRUE | TRUE | TRUE | | TRUE |
string(null byte) "\0" | TRUE | | | | | | |
# Note:
`!isset()`, `is_null()` and `=== null` are functionaly equivalent.
`!` and `empty()` are functionaly equivalent.
- Output for 7.3.32 - 7.3.33
- type | if | empty | is_null | == null | == "" | === "" | ! |
-----------------------------+---------+---------+---------+---------+---------+---------+---------+-
string(empty) "" | | TRUE | | TRUE | TRUE | TRUE | TRUE |
string(space) " " | TRUE | | | | | | |
bool(false) | | TRUE | | TRUE | TRUE | | TRUE |
bool(true) | TRUE | | | | | | |
array(empty) {} | | TRUE | | TRUE | | | TRUE |
array(1) { ["empty_item"] } | | TRUE | TRUE | TRUE | TRUE | | TRUE |
NULL | | TRUE | TRUE | TRUE | TRUE | | TRUE |
string("zero") "0" | | TRUE | | | | | TRUE |
int(0) | | TRUE | | TRUE | TRUE | | TRUE |
float(0.0) | | TRUE | | TRUE | TRUE | | TRUE |
object(stdClass)# (empty) {} | TRUE | | | | | | |
public $bar; (unassigned) | | TRUE | TRUE | TRUE | TRUE | | TRUE |
string(null byte) "\0" | TRUE | | | | | | |
# Note:
`!isset()`, `is_null()` and `=== null` are functionaly equivalent.
`!` and `empty()` are functionaly equivalent.
preferences:
265.39 ms | 405 KiB | 376 Q