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);