index.php
包含此样式的链接:
<a href="index.php?id=1">1</a>
<a href="index.php?id=2">2</a>
然后是这种风格的PHP段落:
if ($_GET["id"] == "1") {}
elseif ($_GET["id"] == "2") {}
因此,当单击链接时,将重新加载页面,并运行其中一个if / elseif块。
但是,当我第一次收到index.php
时出现此错误:未定义索引:id
我想这意味着$_GET["id"]
需要有一个默认值。但是我在哪里将此默认值放在我的代码中?例如,如果我在脚本开头给出值"0"
,则代码块将永远不会运行,因为每次重新加载时值都会被重置。
答案 0 :(得分:4)
您可以先检查是否已设置:
if (isset($_GET["id"])) {
if ($_GET["id"] == "1") {
} elseif ($_GET["id"] == "2") {
}
}
isset是一种语言结构,如果未设置变量,则不会发出任何错误。
empty也不会发出错误,但也会检查“非空”值。
答案 1 :(得分:3)
首先,忽略建议您设置默认值的答案。这不是必需的,也是一种残酷的设计。在检查之前检查该值是否存在。
我建议不要使用else / elseif链。随着链接的增加,代码的丑陋性也会增加。使用开关:
if(isset($_GET['id'])){
switch($_GET['id']){
case 1:
// code
break;
case 2:
// code
break;
}
}
答案 2 :(得分:1)
一种解决方案是检查$ _GET ['id']是否为空,如果是,则设置为0。
if(empty($_GET['id']))
{
$_GET['id'] = 0;
}
答案 3 :(得分:1)
尝试:
if (!isset($_GET["id"]))
{
$_GET["id"] = "0"
}
答案 4 :(得分:1)
首次加载页面时,它将没有任何查询参数。
您应该将条件包含在另一个检查id
:
if (isset($_GET['id'])) {
// you can use switch or keep the ifelseif chain
switch ($_GET['id']) {
case 1:
// do stuff with 1
break;
case 2:
// do stuff with 2
break;
}
}
答案 5 :(得分:0)
$id = (isset($_GET['id'])) ? $_GET['id'] : null;
if ($id == "1") {}
} elseif ($id == "2") {}
答案 6 :(得分:0)
替换
if ($_GET["id"] == "1") {}
与
if (isset($_GET['id']) && $_GET['id']==1){}