Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP未定义索引_Php_Html - Fatal编程技术网

PHP未定义索引

PHP未定义索引,php,html,Php,Html,这听起来真的很愚蠢,但我不明白为什么会出现这个错误 我在html表单中创建了一个名为“查询年龄”的选择框: <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

这听起来真的很愚蠢,但我不明白为什么会出现这个错误

我在html表单中创建了一个名为“查询年龄”的选择框:

<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>
当我运行页面时,出现以下错误:

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


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

我没有看到php文件,但可能是-
在php文件中替换:

$query_age = $_GET['query_age'];
与:


很可能,第一次运行脚本时没有
?query\u age=[something]
$\u GET
没有像
query\u age
这样的键。第一次运行页面时,query\u age索引不存在,因为它没有从表单发送过来

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

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

在我看来,在分配前检查该成员的出席情况是相当丑陋的

Kohana有一个简单的选择参数的方法

你可以这样做你自己的

function arrayGet($array, $key, $default = NULL)
{
    return isset($array[$key]) ? $array[$key] : $default;
}
然后做一些像

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

如果您使用的isset与singles已经发布的答案类似,只需确保末尾有一个括号,如下所示:

$query\u age=(isset($\u GET['query\u age'])?$\u GET['query\u age']:null);

打印($\u GET)显示了什么?还有其他表单值吗?为什么不使用POST?相应的php表单以何种方式对应于HTML表单?它是否生成HTML表单?它是否处理通过HTML表单提交的值?它只是具有相同的基名称和不同的扩展名吗?请告诉我们。您知道您必须在
user\u list.php
中处理表单,因为您在表单操作中指定了这一点?如果您可以发布
index.php的相关代码,并解释应用程序的一般“流程”,这会有所帮助。您还应该将“>90”替换为“90”。您还需要检查html本身。请确保您在php脚本中使用了正确的表单属性名称。这只会抑制通知,而不会修复原因。@mario我在下面的代码中解释了原因。作者写道:“当我运行页面时,我得到了这个错误:注意:未定义的索引:query_age in…/index.php,在第19行”,所以我认为,我的答案可以修复它。修复通知!=确定原因。但我并不怀疑它回答了老年退休金计划“让它消失”的问题。然而,实际的问题在别处。如果处理表单的脚本与生成表单的脚本相同,这是个好主意。但在这种情况下,它似乎是两个不同的脚本。当表单的操作是
user\u list.php
$query\u age=(isset($\u GET['query\u age'])?:null)时,错误会抛出到
index.php
中,只要GET参数的存在对应用程序来说从来都不重要(很少如此)。很好,只有我建议使用匿名函数来控制作用域,并避免出现诸如匿名函数在本例中适用于何处之类的错误?例如$arrayGet=function…这有什么好处?我在上述1)作用域2)重新声明中列出了它们
function arrayGet($array, $key, $default = NULL)
{
    return isset($array[$key]) ? $array[$key] : $default;
}
$page = arrayGet($_GET, 'p', 1);