PHP未定义索引

这听起来真的很愚蠢,但我不明白为什么我得到这个错误。

我创build了一个select框,在我的html表单中命名为“query_age”:

<form method="get" action="user_list.php"> <select name="query_age"> <option value="">Doesn't matter</option> <option value="between 18 and 30">18 - 30</option> <option value="between 31 and 40">31 - 40</option> <option value="between 41 and 50">41 - 50</option> <option value="between 51 and 60">51 - 60</option> <option value="between 61 and 70">61 - 70</option> <option value="between 71 and 80">71 - 80</option> <option value="between 81 and 90">81 - 90</option> <option value="> 90">Older than 90</option> </select> 

在相应的php表单中,我有:

 $query_age = $_GET['query_age']; 

当我运行该页面时,出现此错误:

注意:第19行的index.php中的未定义索引:query_age

我不明白为什么会发生这种情况,我很想知道如何让它消失。

我没有看到PHP文件,但这可能是 –
取代你的PHP文件:

 $query_age = $_GET['query_age']; 

有:

 $query_age = (isset($_GET['query_age']) ? $_GET['query_age'] : null); 

最有可能的是,第一次运行你的脚本没有?query_age=[something]$_GET没有像query_age这样的query_age

在分配成员之前检查成员的存在在我看来是非常难看的。

Kohana具有使select参数简单的有用function 。

你可以让自己像…

 function arrayGet($array, $key, $default = NULL) { return isset($array[$key]) ? $array[$key] : $default; } 

然后做一些像…

 $page = arrayGet($_GET, 'p', 1); 

第一次运行页面时,query_age索引不存在,因为它尚未从表单发送。

当你提交表单时,它就会存在,而且不会抱怨。

 #so change $_GET['query_age']; #to: (!empty($_GET['query_age']) ? $_GET['query_age'] : null); 

如果你使用isset就像单打已经发布的答案,只要确保在最后有一个支架,如下所示:
$query_age = (isset($_GET['query_age']) ? $_GET['query_age'] : null);