当您使用在此之前尚未设置的数组索引的值时,会弹出“未定义索引”通知:
<?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 行 C:\xampp\htdocs\test.php 中的 c”。
这通常在您访问 $_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';
}