PHP $ _GET和未定义的索引
当我尝试在其他PHP服务器上运行脚本时,出现了一个新问题。
在我的旧服务器上,即使未s
声明任何参数,以下代码也可以正常工作。
<?php if ($_GET['s'] == 'jwshxnsyllabus')
echo "<body onload=\"loadSyllabi('syllabus', '../syllabi/jwshxnporsyllabus.xml', '../bibliographies/jwshxnbibliography_')\">";
if ($_GET['s'] == 'aquinas')
echo "<body onload=\"loadSyllabi('syllabus', '../syllabi/AquinasSyllabus.xml')\">";
if ($_GET['s'] == 'POP2')
echo "<body onload=\"loadSyllabi('POP2')\">";
elseif ($_GET['s'] == null)
echo "<body>"
?>
但是现在,在本地计算机(XAMPP-Apache)上的本地服务器上,s
如果未定义for的值,则会出现以下错误。
Notice: Undefined index: s in C:\xampp\htdocs\teaching\index.php on line 43Notice: Undefined index: s in C:\xampp\htdocs\teaching\index.php on line 45
Notice: Undefined index: s in C:\xampp\htdocs\teaching\index.php on line 47
Notice: Undefined index: s in C:\xampp\htdocs\teaching\index.php on line 49
如果为声明了值s
,但脚本要调用某些javascript函数会发生什么,但是如果未声明任何内容,我希望页面能够正常加载。
你能帮助我吗?
回答:
错误报告不会在以前的服务器上包含通知,这就是为什么您没有看到错误的原因。
您应该在尝试使用索引之前检查索引是否s
确实存在于$_GET
数组中。
这样的话就足够了:
if (isset($_GET['s'])) { if ($_GET['s'] == 'jwshxnsyllabus')
echo "<body onload=\"loadSyllabi('syllabus', '../syllabi/jwshxnporsyllabus.xml', '../bibliographies/jwshxnbibliography_')\">";
else if ($_GET['s'] == 'aquinas')
echo "<body onload=\"loadSyllabi('syllabus', '../syllabi/AquinasSyllabus.xml')\">";
else if ($_GET['s'] == 'POP2')
echo "<body onload=\"loadSyllabi('POP2')\">";
} else {
echo "<body>";
}
使用switch
语句使代码更具可读性可能会有所帮助(如果您打算增加更多的案例)。
switch ((isset($_GET['s']) ? $_GET['s'] : '')) { case 'jwshxnsyllabus':
echo "<body onload=\"loadSyllabi('syllabus', '../syllabi/jwshxnporsyllabus.xml', '../bibliographies/jwshxnbibliography_')\">";
break;
case 'aquinas':
echo "<body onload=\"loadSyllabi('syllabus', '../syllabi/AquinasSyllabus.xml')\">";
break;
case 'POP2':
echo "<body onload=\"loadSyllabi('POP2')\">";
break;
default:
echo "<body>";
break;
}
编辑:顺便说一句,我编写的第一组代码模仿了您的全部意图。意外值的预期结果是否?s=
意味着不输出<body>
标签,或者这是疏忽?请注意,该开关将始终通过默认设置来解决此问题<body>
。
以上是 PHP $ _GET和未定义的索引 的全部内容, 来源链接: utcz.com/qa/415405.html