[PHP-users 5825] Re: PHP 4.0 / 4.1 の isset()の相違
Naofumi Kondoh
php-users@php.gr.jp
Sun, 03 Mar 2002 18:48:08 +0900
ソフト工房の近藤です。
WADA Hiroyuki wrote:
..... 略 .....
> class testclass { var $dd = ""; }
> $test = new testclass();
> if (isset($test->dd[0])){
>
> というのは、ddが配列であるつもりなのに""で初期化してるのが
> おかしいのだと思います。
スカラーか配列かの判定の話ですので、わざとスカラー
値をセットしてテストする例題にしています。
スレッドの流れが読みにくかったのかもしれませんが、
このスレッドの主旨は、プロパティーが配列なのか、
値がセットされているのか未定義なのかを判定する方法
についての話です。
つまり、$test->dd は、プログラムの分岐によってスカラー
になる場合と配列になる場合とがあり、それを判定する場合、
PHP 4.0 では、 isset($test->dd[0]) だけでも Warning が
出ないが、PHP 4.1 では、
is_array($test->dd) && isset($test->dd[0])
と書かないと Warning が出ますというだけの話です。
# isset だけでに頼らず、細かくチェックしないといけな
# いという教訓でした。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(株)ソフト工房 近藤直文 Email: nkon@shonan.ne.jp
《 PostgreSQL+PHPソースコードジェネレーターデモGPL版 》
http://www.SOFTKOUBOU.co.jp/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/