5. php - 文法 - Undefined index を表示させない
- 5.1 概要
- 5.2 正規の方法
- 5.3 あらかじめ未定義の可能性があることがわかっている場合
5.1 概要
いつ頃からなのかわかりませんが、PHP では、未定義の変数や配列を使用しようとすると「Undefined index」という通知(Notice)が出ます。
わたしが使い始めの時期は、表示されなかったので、PHP 5 の初期は特に表示されていなかったものだと思います。
つまりまぁ。
<?php
print($one."\n");
$two = array();
print($two['key']."\n");
?>
てなコードを書いて実行すると下記のような表示になるわけです。
PHP Notice: Undefined variable: one in /パス/ソース名.php on line 2
PHP Notice: Undefined index: key in /パス/ソース名.php on line 4
5.2 正規の方法
これを避ける、正規の方法としては
bool isset ( mixed $var [, mixed $... ] )
を使って、定義済であるかどうかを調べてから処理します。
冒頭のソースで記述するならば・・・。
<?php
if (isset($one))
{
print($one."\n");
}
$two = array();
if (isset($two['key']))
{
print($two['key']."\n");
}
?>
てな書き方になります。
5.3 あらかじめ未定義の可能性があることがわかっている場合
「Undefined index」の出力は、うっかり定義していなかったとか初期化し忘れによる不具合の解消には有効ですが。
あらかじめ、未定義である可能性のあることはじゅうぶん承知していて、いちいち isset を呼び出すのはソース上かえって見にくくなることがあります。
これを解消するには変数の前に @ をつけます。
これで「Undefined index」は出力されなくなります。
冒頭のソースで記述するならば・・・。
<?php
print(@$one."\n");
$two = array();
print(@$two['key']."\n");
?>
|
|