在定义变量后将变量设置为空(“”)的目的是什么?

时间:2014-09-22 18:53:34

标签: php forms validation

我正在学习验证表单输入数据,并且在w3schools上有一些我不理解的代码。见下文:

<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";

//bla bla bla

我不明白&#34; //定义变量并设置为空值&#34;装置

1 个答案:

答案 0 :(得分:1)

不要使用本教程。我正在查看此test_input()函数,并且无法相信有人会发布此代码:

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

请在此处查看我的回答,了解有关为什么这是一个坏主意的更多信息,以及该怎么做:https://stackoverflow.com/a/7810880/362536

现在,谈谈你的实际问题。在许多语言中,您需要在使用之前声明要使用的变量。 PHP不是这些语言之一。有些人认为如果你知道所有变量都在前面,你的代码会更容易阅读,并且定义这些变量作为代码风格的问题。也就是说,它们将列出变量并将它们设置为某个值。您拥有的代码:

$nameErr = $emailErr = $genderErr = $websiteErr = "";

......在功能上等同于:

$nameErr = '';
$emailErr = '';
$genderErr = '';
$websiteErr = '';

在PHP中,您可以链接变量赋值,这就是为什么这两者是等价的。

如果您选择将变量声明为样式,则不应为其分配空字符串。您应该使用null代替。假设我有一个从用户输入字段有条件地分配数据的变量。如果我使用空字符串''来初始化变量,我无法知道表单字段是否存在并且是否已提交。如果我使用null,我可以使用isset()来确定变量是否包含空表单字段(空字符串'')或null作为其值。

您可以很好地确定空字符串初始化适合您的应用程序。正如John Conde在上面的评论中所说,许多人使用它,这样他们就可以自由地连接变量而不用担心它们中的内容,因为即使它们没有获得明确的值,你已经分配了一个空的串。我认为,很少有时候你会处理在整个生命周期中始终保持一个目的的数据,并且最好尽可能以最干净的方式提供数据。如果变量旨在为null,则其值应为null而不是空字符串。您选择的取决于您和您的具体情况。