2011年11月30日水曜日

PHPのNullとissetとarray_key_exists

先ほど気がついたのですが、PHPのissetの動きを勘違いしていました。

$var=NULL;
isset( $var ); // returns FALSE
is_null( $var ); // return TRUE
is_null( $none ); // E_NOTCE

issetはNULL値をFALSE判定します。

いつから勘違いしてたんだろう。

たとえばis_nullで調べればいいのですが、
変数が存在しない場合はE_NOTICEが出ます。

実は、あることにNULL値を使おうと思ってたのです。PHPだと空白('')、FALSE、NULLと三種類あるので便利だなぁと思ってたのですが、変数の判定が出来なければ使いにくい。困ったぞ、というわけです。

で、気がついたのがarray_key_existsを使うこと。
こういう構造になっている場合、NULLでも存在判定が出来ます。

$data[ 'test' ] = NULL;
array_key_exists( 'test', $data ); // returns TRUE

何とかなりそうです。

0 件のコメント: