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


what is the purpose of setting variables to empty (" ") after defining them?

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

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

我不明白"//定义变量并设置为空值"是什么意思。

不要使用本教程。我看到这个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,而不是空字符串。你的选择取决于你和你的具体情况。