处理

时间:2015-12-05 21:49:13

标签: php isset

我有一个奇怪的事情发生在我编写的PHP脚本中。我有一个很大的形式,有很多字段,复选框,单选按钮等。

在处理脚本中有很多重复的代码,我检查字段是否设置,如果是,则输出基于该字段的句子。

我用来处理该字段的代码是:

if(isset($_POST['testresults'])) { // test results Info
    $testresults = $_POST['testresults'];
    echo $clientInitials . " test results are " . $testresults . ". ";
} 

现在,出于某种原因,在与此相同的40多个块中(仅使用不同的变量和句子输出),即使字段为空/未设置,也有两个块执行。作为测试,我将相同的代码块复制到一个新的PHP文件,它具有相同的行为,但这是一个块的精确副本,除了字段/变量名称之外,它可以正常工作。我已从表单中剪切了字段名称,以确保没有拼写错误或其他内容。 作为另一个测试,如果我将行更改为if(!isset($ _ POST [' testresults'])),那么它会跳过该块。因此,即使没有数据,它就好像在该字段中存在数据(并且它也与其他1个块一起执行)。字段名称/变量也不会在脚本中的任何其他位置使用,我通过对文件进行搜索来验证这一点。

表单字段为:

<input type="text" name="testresults" value="">

我已经尝试过,有没有&#34;值&#34;参数没有变化。所有其他正常工作的都有值=&#34;&#34;在他们中间。

我已经尝试清除浏览器缓存但没有区别,仍然会出现这种奇怪的行为。

所以我想我只是想知道使用isset()是否有限制,或者我错过了什么?

1 个答案:

答案 0 :(得分:4)

isset()只会检查是否设置了值,而不是它是否为空,这就是为什么它更常用于检查表单是否实际上是首先提交的,或者是检查$ _GET变量。您应该使用的功能是empty() - 或者在您的情况下!empty()是这样的:

if(!empty($_POST['testresults'])) { // test results Info
    $testresults = $_POST['testresults'];
    echo $clientInitials . " test results are " . $testresults . ". ";
}