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