在PHP中初始化空字符串的正确方法是什么?

kas*_*ord 21 php string initialization

在C#中,我采用了以下初始化空字符串的方法:

string account = string.empty;
Run Code Online (Sandbox Code Playgroud)

而不是

string account = "";
Run Code Online (Sandbox Code Playgroud)

根据我的导师和我讨论过的其他C#开发人员,第一种方法是更好的做法.

也就是说,有没有更好的方法来初始化PHP中的空字符串?目前,我看到以下广泛使用:

$account = '';
Run Code Online (Sandbox Code Playgroud)

谢谢.

Wes*_*rch 30

你正在做的是正确的.关于它的说法不多.

例:

$account = '';

if ($condition)  $account .= 'Some text';

echo  $account;
Run Code Online (Sandbox Code Playgroud)

你可能会变得愚蠢并做这样的事情:

$str = (string) NULL;
Run Code Online (Sandbox Code Playgroud)

..但这完全没有意义,而且它完全相同 - 一个空字符串.

你说得对.


Con*_*ltz 5

在大多数情况下,这是无关紧要的.与许多语言不同,在PHP中(通常)是否初始化变量并不重要.PHP将自动转换未初始化(甚至未声明)的变量,以便立即使用.例如,以下都是正确的:

$a;
$a + 7; // Evaluates to 7
$a . "This is a test."; // Evaluates to "This is a test."
if (! $a) {}  // Evaluates as true
Run Code Online (Sandbox Code Playgroud)

需要注意的是,select函数检查变量类型(严格等式检查,===).例如,以下操作失败:

$a;
if (is_string($a)) {
    print 'success';
}
else {
    print 'fail';
}
Run Code Online (Sandbox Code Playgroud)

然而,这种便利性成本很高.与严格键入(或者至少是"更严格"类型)的语言不同,核心语言本身没有任何东西可以帮助您捕获常见的程序员错误.例如,以下将很乐意执行,但可能不如预期:

$isLoggedIn = getLoginStatus($user);
if ($isLogedIn) {
    // Will never run
    showOrder($user);
}
else {
    showLoginForm();
}
Run Code Online (Sandbox Code Playgroud)

如果您选择初始化所有变量,请按照您的方式执行.但随后启用PHP通知(E_NOTICE)以获取有关未初始化变量的运行时警告.如果你不这样做,你基本上就是在浪费时间和按键来初始化你自己的变量.