【问题标题】:How to test if variable in php isset [duplicate]如何测试php isset中的变量[重复]
【发布时间】:2020-06-15 05:41:29
【问题描述】:

我有一个包含姓名、电台和电子邮件的表格。

<form action="index.php" method="POST" role="form">
    <input class="form-control" name="name" type="text" placeholder="NAME">
    <input class="form-control" name="email" type="text" placeholder="EMAIL(optional)">

    <input type="radio" class="form-check-input" name="gender" value="male">Male
    <input type="radio" class="form-check-input" name="gender" value="female">Female
    <input type="radio" class="form-check-input" name="gender" value="other">Other
    ...

为了测试姓名、电子邮件或电台是否填写,我使用isset

if (isset($_POST['name'])) {
    echo 'name isset';
}
    if (isset($_POST['email'])) {
    echo 'email isset';
}
if (isset($_POST['gender'])) {
    echo 'gender isset';
}

我不明白的是:即使我将字段留空,它也会输出来自 nameemail 循环的 2 个回声,而不是 gender 循环。

有人可以解释为什么即使我将字段留空并提交,名称和电子邮件的返回值也是 TRUE 吗? 为什么,如果我不点击任何收音机,这个返回值是 FALSE? (echo 'gender isset'; 没有输出!)

【问题讨论】:

  • 空字段仅表示 "" 空输入字符串,而不是它们的缺失。

标签: php radio isset


【解决方案1】:

因为如果您将字段留空,它们会向服务器发送一个空字符串。这意味着$_POST['name'] 将包含空字符串''

函数isset 检查值是否存在并且与null 不同。在您的情况下,空字符串与 null 不同并且存在。

您可以改用empty,它会起作用。

例如:

if (!empty($_POST['name'])) {
    echo 'name isset';
}

至于无线电 - 如果没有选择,则不会发送它们。这就是 isset 在那里工作的原因。

【讨论】:

  • 感谢您的评论。我错误地认为''NULL 相同。现在我明白了这个问题!
猜你喜欢
  • 2010-11-17
  • 2016-09-04
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
  • 2010-09-29
  • 2013-02-08
  • 1970-01-01
  • 2018-02-26
相关资源
最近更新 更多