如何测试php是否设置了变量[duplicate]

问题描述 投票:0回答:1

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

<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循环。

有人可以解释一下,即使我将字段保留为空并提交,为什么name和email的返回值为TRUE?为什么,如果我没有单击任何收音机,则此返回值为FALSE? (echo 'gender isset';未输出!)

php radio isset
1个回答
2
投票
因为如果您将这些字段留空,它们将向服务器发送一个空字符串。表示$_POST['name']将包含空字符串''

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

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

例如:

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

至于收音机-如果未选择,则不发送。这就是isset在那里工作的原因。
© www.soinside.com 2019 - 2024. All rights reserved.