$x is an undefined variable and must have got coerced to false somehow... $x === NULL false === (bool) NULL x doesn't have a $ so must not be a variable. Maybe it's a nonempty string (not equal to '0')? So should be coerced to true... obviously. hang your head in shame revealing your secrets now... 01234567 8 array(6) { ["_GET"]=> array(0) { } ["_POST"]=> array(0) { } ["_FILES"]=> array(0) { } ["GLOBALS"]=> *RECURSION* ["did_good_job"]=> bool(true) ["reveal_secrets"]=> bool(false) } array(4) { ["_GET"]=> array(0) { } ["_POST"]=> array(0) { } ["_FILES"]=> array(0) { } ["GLOBALS"]=> *RECURSION* } array(5) { ["_GET"]=> array(0) { } ["_POST"]=> array(0) { } ["_FILES"]=> array(0) { } ["GLOBALS"]=> *RECURSION* ["x"]=> int(0) } array(6) { ["_GET"]=> array(0) { } ["_POST"]=> array(0) { } ["_FILES"]=> array(0) { } ["GLOBALS"]=> *RECURSION* ["x"]=> int(0) ["y"]=> int(1) } $y === 1 112358 223469 val1, val2, val3, k1 => val1, k2 => val2, k3 => val3, ID generated: 172 ID generated: 149 ID generated: 145 ID generated: 170 ID generated: 162 ID generated: 140 ID generated: 146 ID generated: 106 IDs: Array ( [0] => 172 [1] => 149 [2] => 145 [3] => 170 [4] => 162 [5] => 140 [6] => 146 [7] => 106 ) $ID === 106