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 43

Notice: 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

回到顶部