检查变量是否已设置,不为空且不为空

时间:2016-08-08 01:59:28

标签: php isset

我正在使用isset检查变量是否已设置且不为空,然后我处理它(例如通过电子邮件或Google电子表格发送)。有时候我会收到空​​结果,比如变量是null还是空,甚至不是空的空格。为什么会这样?我错过了什么吗?

    if(isset($_POST["name"]) && isset($_POST["phone"])){
            $name  = $_POST["name"];
            $phone  = $_POST["phone"];
            $message="Nom: $name \nPhone: $phone \n";

            require 'PHPMailer/PHPMailerAutoload.php';
            $mail = new PHPMailer;
            $mail->setFrom('from@mail.com', 'Name From');
            $mail->addAddress('to@mail.com', 'Name To');
            $mail->Subject  = 'Subject';
            $mail->Body     = $message;
      }

3 个答案:

答案 0 :(得分:2)

!empty($_POST["name"])它检查变量是否有值。如果名称不为空,则继续使用其他代码。

if(isset($_POST["name"]) && !empty($_POST["name"]) && isset($_POST["phone"]) !empty($_POST["phone"])){
        $name  = $_POST["name"];
        $phone  = $_POST["phone"];
        $message="Nom: $name \nPhone: $phone \n";

        require 'PHPMailer/PHPMailerAutoload.php';
        $mail = new PHPMailer;
        $mail->setFrom('from@mail.com', 'Name From');
        $mail->addAddress('to@mail.com', 'Name To');
        $mail->Subject  = 'Subject';
        $mail->Body     = $message;
  }

另一个选项

if($_POST["name"] != "") 

如果变量的字符串为空,则if中的代码不会继续。

其他参考资料 - $watch

答案 1 :(得分:2)

如果var存在,则isset()返回TRUE,其值不是NULL,否则为FALSE。

ex:$ var =“”;

isset($ var)将返回true;

我建议使用!empty()而不是isset()。

答案 2 :(得分:1)

回应前面答案中表达的两种观点,我观察到"无用的PHP语言提供了多种的功能“尝试要有所帮助'在各种情况下。"但是,那些"各种情况"可以是完全不同的!因此,"一个尺寸"不适合所有人。"

例如,如果您正在处理HTTP GET / POST数据流,那么您的第一个业务处理应该是确定Web客户端是否提供了特定变量在其回应中。如果您确定已经,那么您应该将其视为原样:"字符串。"向右移动然后(恕我直言......)到Jees Denny"其他选项"测试该字符串是否为空。

测试" NULL,"另一方面,真的应该只适用于来自数据库查询的结果。在这种情况下,你知道SQL服务器提供的值已经了,因为你知道服务器为您请求的每个列提供一些值。在 this 的情况下,您首先要知道该值是否为NULL(值得注意的是," 与'空字符串相同。'")

因此,即使PHP语言提供了许多显然非常相似的功能,所有这些功能当然都可以使用,"你应该只使用与你知道你正在处理的实际情况最密切相关的那些。