[PHP-users 5806] PHP 4.0 / 4.1 の isset() の相違

Naofumi Kondoh php-users@php.gr.jp
Fri, 01 Mar 2002 23:25:08 +0900


ソフト工房の近藤です。

PHP 4.0.4pl1 と PHP 4.1.2 の isset で、Warning の有無に
相違がありましたので、ご参考までにご報告します。
相違は Warning の有無だけで、実行結果は同じです。
# アプリを直さなくっちゃ(^_^;;
 
プロパティーが配列で且つ指定の添字の要素が存在するかを
チェックするのに、
    if (isset($test->dd[0]))
を使用して PHP 4.0 では Warning は出なかったのですが、
PHP 4.1.2 では、Warning が出るようになりました。
is_array を追加して次のようにすれば、4.1.2 でも Warning
が出なくなります。

if (is_array($test->dd) && isset($test->dd[0]))

(参考:テストコード)
-----------------------------------------------
<?php
error_reporting(E_ALL);
class testclass { var $dd = ""; }
$test = new testclass();
if (isset($test->dd[0])){
    echo "(A) 真 \n";
}else{
    echo "(A) 偽 \n";
}
if (is_array($test->dd) && isset($test->dd[0])){
    echo "(B) 真 \n";
}else{
    echo "(B) 偽 \n";
}
?>
-----------------------------------------------

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文        Email:  nkon@shonan.ne.jp 
  《 PostgreSQL+PHPソースコードジェネレーターデモGPL版 》
           http://www.SOFTKOUBOU.co.jp/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/