PHP isset在处理过程中似乎读取不正确


PHP isset does not seem to read correctly in processing

我正在编写的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="">

我已经尝试过使用和不使用"value"参数,但没有任何更改。所有其他正确工作的都有value="。

我试过清除浏览器缓存,但没有什么区别,仍然会有这种奇怪的行为。

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

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

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