• ベストアンサー

perlでいうdefiendのようなもので、警告をださない方法

厳密な警告は残したまま、ある配列の添え字が定義されているか調べたいのですが、この箇所だけ、error_reporting(E_USER_NOTICE)にして、自分でエラーハンドリングするしかないのでしょうか? <?php error_reporting(E_ALL); $a = array(); $b = is_null($a[1]); // <-- ここで判定したい。(しかし、E_ALLにすると警告が表示されます。) var_dump($b); // true ?>

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

E_ALLを指定すれば、値を設定していない変数や配列を参照したら エラーになるのは当たり前です。 $a[1]はNULLではなく未設定なのですから。 あえてかくなら <?php error_reporting(E_ALL); $a = array(); $b = isset($a[1])?is_null($a[1]):true; var_dump($b); // true ?> っとしてみてはいかがですか? 余談ですが、質問をしめるときはありがたくないならあえてお礼を つけろとはいいませんが、わかったのかわからないのかくらいは 書いてもらわないと、なげっぱなし感が強くてそのうち誰も 回答しなくなりますよ

ne5
質問者

お礼

警告がでないようになりました。 issetがdefinedと同等ということですね。 ありがとうごいました。