PHP Notice: Undefined variabl/offset/indexという警告に対する対処法のメモ。
Noticeはエラーレベルによっては表示されない[1]。
対策はissetで有効な値が設定されているかをチェックする。
» isset
「変数がセットされていること、そして NULL でないことを検査する」
下記のコードはFORMの中にname属性がhogeという要素はないので
PHP Notice: Undefined index というエラーが表示される。
<form action="example.php" method="POST"> <input type="text" name="foo"> <input type="submit" value="送信"> </form>
if ($_POST['hoge']) { // do something; }
issetで値が設定されているときだけ処理する。
if (isset($_POST['hoge'])) { // do something }
### &&, andとの併用
<?php error_reporting(E_ALL); // 何も表示せずNoticeも発生しない $foo; $bar; if (isset($foo) && $bar) { print($foo + ', ' + $bar); } ?>
PHPの&&, and(どちらも論理積)[2]は左が偽のときは右を評価しない。上記のコードは&&の右$barは評価されないのでNoticeは起こらない。
[1] php.iniやPHPファイル内でerror_reporting()関数やini_set(‘error_reporting’, 定数)を使ってNoticeを出さないようにすることもできる。
実行時の警告。エラーを発しうる状況に遭遇したことを示す。 ただし通常のスクリプト実行の場合にもこの警告を発することがありうる
[2] 優先順位が異なる。ビット演算子の&は&&, andと異なり両辺を評価する。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。