我正在使用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;
}
答案 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语言提供了许多显然非常相似的功能,所有这些功能当然都可以使用,"你应该只使用与你知道你正在处理的实际情况最密切相关的那些。