それまで設定されていなかった配列インデックスの値を使用すると、「未定義のインデックス」通知がポップアップ表示されます。
<?php
$myarray = array('a'=>1, 'b'=>2);
var_dump($myarray['a']); //outputs int(1) as this is defined
var_dump($myarray['c']); //we defined 'a' and 'b' but not 'c'.
?>
3 行目は次のようになります。
これは通常、$_GET または $_POST 配列にアクセスするときに発生します。ほとんどの場合、その理由は、インデックスのスペルを間違えた (たとえば、 の$_POST['tset']
代わりに入力した$_POST['test']
) か<input>
、情報を送信する HTML フォーム内の要素を編集してから、PHP コードを再調整するのを忘れたためです。
isset()
次のように使用してインデックスが存在するかどうかをテストすることにより、すべてが正常に機能していることを確認できます。
if( isset($_POST['test']) ) {
$myvar = $_POST['test'];
//and then whatever else you intended
}
else {
//the index wasn't defined - you made a mistake, or possibly the user deliberately removed an input from the submitting form
$error = "POST-array is missing the index 'test'!";
//and now make sure that things after this which rely on the 'test' value don't run
}
多くのスクリプトで見られる非常に一般的な行:
$myvar = isset($_POST['test']) ? $_POST['test'] : 'N/A';
これは、if-else 構造の特別な PHP 短縮形を使用します。この行は、次とほとんど同じです。
if( isset($_POST['test']) ) {
$myvar = $_POST['test'];
}
else {
$myvar = 'N/A';
}