【问题标题】:Checking if variable is set, not null and not empty检查是否设置了变量,不为空也不为空
【发布时间】:2026-01-05 02:00:01
【问题描述】:

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

    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;
      }

【问题讨论】:

  • 如果变量为空但设置isset 将返回true。用isset($_POST["name"]) && empty($_POST["name"])检查一下。
  • $a = ""; 然后isset( $a ); 会变成true isset 不是区分空字符串的好函数

标签: php isset


【解决方案1】:

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

例如:$var="";

isset($var) 将返回 true;

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

【讨论】:

    【解决方案2】:

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

    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里面的代码,不继续。

    附加参考-In where shall I use isset() and !empty()

    【讨论】:

      【解决方案3】:

      与前面的答案中表达的两种观点相呼应,我观察到“一直很有帮助的 PHP 语言提供了各种的函数,这些函数在各种情况下'尝试提供帮助'。 "但是,那些“各种情况”可能完全不同!因此,“一种尺寸”并不“适合所有人”。

      例如,如果您正在处理 HTTP GET/POST 数据流,那么您的首要任务应该是确定 Web 客户端是否提供在其回复。如果您确定它确实, 然后您应该将其视为它是什么:“字符串”。继续前进,然后(恕我直言...)到 Jees Denny 测试该字符串是否为空的“其他选项”。

      另一方面,对“NULL”的测试实际上应该只应用于数据库查询的结果。在这种情况下,您知道一个值已经由 SQL 服务器提供,因为您知道服务器将为您请求的每一列提供一些值。在这种的情况下,您首先想知道该值是否为NULL(请注意,哪个值与“空字符串”相同。”)

      因此,即使 PHP 语言提供了许多“表面上非常相似的函数,当然所有这些函数你都可以使用”,但你应该强调只使用与你知道你正在处理的实际情况。

      【讨论】: