PG WORKS

PHPやLinuxサーバなどのノウハウや、便利なツールを紹介していきます。

【PHP】Noticeを回避するためにisset関数を使おう

php本体側の設定で、E_NOTICEの設定がないとき、値が入っていない変数や配列を見に行くと、「Notice: Undefined index」が表示されます。

普段は、php.iniやphpファイルのini_setなどで、NOTICEを無視したりと、結構雑な感じに扱われますが、仕事の都合でNOTICEエラーも対応することが多々あります。

NOTICEが表示される書き方

<?php
  if( $sample == "zen6a" ) {
    echo 'zenです。';
  } else {
    echo 'zenではないです。';
  }
?>

上記の書き方だと、if文でNOTICEが表示されます。
また、「empty」や配列の件数を確認する「count」を使用しても表示されてしまいます。(めんどry

NOTICEの回避方法

<?php
  if( isset($sample) == "zen6a" ) {
    echo 'zenです。';
  } else {
    echo 'zenではないです。';
  }
?>

同じサンプルに、if文にisset関数を付け加えました。
これで、$sampleに値が入ってなくてもNOTICEが表示されることはありません。

また、次のサンプルは連想配列でissetを利用した書き方になります。

連想配列のNOTICEの回避方法

<?php
  if( isset($aryData[@key($aryData)]) ) {
    echo '配列の中に値あります。';
  }
?>

強引な書き方かもしれませんが、key関数を使い連想配列名を取得して値を確認しています。

もっといいやり方があると思いますので、こちらは随時更新していきたいと思います。