issetの判定結果いろいろ

isset($x);の結果がどうなるか?


$x; // false
$x = null // false
$x = '' // true
$x = array() // true

さらに


$x = array()
isset($x[0]) // false
さらに


$x = 1;
unset($x);
isset($x) // false

まとめ:
宣言のみやnullの代入はfalseを返す
定義していない添え字へのアクセスもfalse
また、設定したあとunsetしてもfalseになります


おまけ:array_key_existsとの違い

php > $ary=array('hoge'=>null); echo var_dump(isset($ary['hoge']));
bool(false)

php > $ary=array('hoge'=>null); echo var_dump(array_key_exists('hoge',$ary));
bool(true)

keyの中身がnullならば、isset()はfalse, array_key_exists()はkeyがあれば値がnullでもtrue