[PHP-users 14030] Re: E_ALLのときの

おかむら php-users@php.gr.jp
Mon, 17 Mar 2003 14:12:24 +0900


元の目的からは外れるので余談になりますが、
スーパーグローバルでない変数であれば、
設計によっては変数に明示的にNULLが入っている場合もあります。
この場合はisset()はfalseを返すため使えません。

例えばデータベースが値としてNULLを返す場合がそれです。

NULLが入っている変数を初期化済みと見なしたい場合は
array_key_exists()を使うとよいです。


// example
$pg = pg_connect( 'dbname=hoge' );
$qr = pg_query( $pg,'SELECT NULL as n');
$rs = pg_fetch_array( $qr );

print_r( $rs );

print 'isset    :' . isset( $rs['n'] ) . "\n";            // false
print 'isnull   :' . is_null( $rs['n'] ) . "\n";          // true
print 'keyexists:' . array_key_exists( 'n', $rs ) . "\n"; // true


------- ------- ------- ------- ------- ------- -------
おかむら <okamura@ntciis.ne.jp>