[PHP-users 5812] Re: PHP 4.0 / 4.1 の isset()の相違

Naofumi Kondoh php-users@php.gr.jp
Sat, 02 Mar 2002 13:00:47 +0900


ソフト工房の近藤です。

Yasuo Ohgaki wrote:
> 
> 大垣です。
> 
> Naofumi Kondoh wrote:
...略...

> ついでに、isset()のバグも紹介します。
> 
> <?php
> 
> $arr = array('foo' => 'bar');
> if (isset($arr['foo']['var'])) {
>    echo "OK";
> }
> else {
>    echo "NG";
> }
> ?>
> 
> バグのためOKを表示します :(

$arr['foo'][ ] なら、添字が何でも Warning を
ださずに、何かゴミを表示するみたいですね。

$arr = array('foo' => 'bar');
if (isset($arr['foo']['bar'])) {
    echo "OK <br>";
    echo "arr['foo'] is {$arr['foo']} <br>";
    echo "arr['foo']['bar'] is {$arr['foo']['bar']} <br>";
    echo "arr['foo']['HOGE'] is {$arr['foo']['HOGE']} <br>";
    echo "arr['HOGE'] is {$arr['HOGE']} <br>"; //これは Warning。
} else {
  echo "NG <br>";
}  

-------- 実行結果 -------- PHP 4.1.2 ----
OK 
arr['foo'] is bar 
arr['foo']['bar'] is b 
arr['foo']['HOGE'] is b 

Warning: Undefined index: HOGE in /jj/vvv/php4/isset.aa.php on line 18
arr['HOGE'] is 

...略...

> 4.2.0では修正されるべきですが、間に合わないかも、、、

大した問題ではないけど、4.0.4pl1 で、デバッグ完了
した筈のアプリで、4.1.2 で山のように Warning がで
たのでちょっとびっくりしただけ。

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