在PHP中初始化空字符串的正确方法是什么?
在C#中,我已经开始采取初始化空字符串的方法如下:在PHP中初始化空字符串的正确方法是什么?
string account = string.empty;
而不是
string account = "";
据我的导师和其他C#开发人员我已经说过了,在第一种方法是更好的做法。
这就是说,有没有更好的方式来初始化PHP中的空字符串?目前,我看到下面广泛应用于:
$account = '';
感谢。
你在做什么是正确的。没什么可说的。
例子:
$account = '';
if ($condition) $account .= 'Some text';
echo $account;
你可以得到愚蠢的,做这样的事情:
$str = (string) NULL;
..但是那是毫无意义的,它是完全一样的东西 - 一个空字符串。
你做得对。
那么:$ account = null; ? – kaspnord 2012-01-27 17:26:25
是的,这将工作正常。这是所有上下文相关的,你可能想在稍后看看值是'NULL'而不是'“”'(空字符串)(但实际上你不需要)。你的方法更清晰,你可以马上告诉var是一个字符串。弱打字可能是你的朋友或敌人。 – 2012-01-27 17:27:50
这里有一些其他的东西在PHP处理字符串时要考虑:
// Localize based of possible existence
$account = (array_key_exists('account', $results)) ? $results['account'] : null;
// Check to see if string was actually initialized
return (isset($account)) ? $account : null
// If a function is passed an arg which is REQUIRED then validate it
if (empty($arg1)) {
throw new Exception('Invalid $arg1');
}
echo $arg;
// If you are looking to append to string, then initialize it as you described
$account = null;
if (!empty($firstName)) {
$account .= $firstName;
}
echo $account;
// Also, it's better to initialize as null, so you an do simple check constructs
if (is_null($account)) {
// Do something
}
// Versus these types of checks
if ($account == '') {
// Do something
}
通常我会尽量避免初始化这样的增值经销商。相反,我会本地化,或者在整个代码中检查是否存在,否则最终会保留一组变量,这些变量在初始化后可能不会实际反映整个代码中的用法。
谢谢,这很有帮助。不幸的是,我没有足够的代表来回答你的答案。 – kaspnord 2012-01-27 17:33:25
不用担心,用PHP玩得开心。 – 2012-01-27 17:36:43
大多数情况下,这是无关紧要的。与许多语言不同,在PHP中,它(通常)无论是初始化变量都无关紧要。 PHP会自动将一个未初始化(甚至未声明的)变量视为适合立即使用。例如,以下是正确的:
$a;
$a + 7; // Evaluates to 7
$a . "This is a test."; // Evaluates to "This is a test."
if (! $a) {} // Evaluates as true
一个需要注意的是,选择功能检查变量类型(如确实全等检查,===)。例如,下面的失败:
$a;
if (is_string($a)) {
print 'success';
}
else {
print 'fail';
}
虽然这种方便带来了沉重的代价。与严格类型(或至少是“更严格”类型)的语言不同,核心语言本身没有任何东西可以帮助您捕捉常见的程序员错误。例如,下面将愉快地执行,但可能不会如预期:
$isLoggedIn = getLoginStatus($user);
if ($isLogedIn) {
// Will never run
showOrder($user);
}
else {
showLoginForm();
}
如果您选择初始化所有的变量,这样做只是像你一样。但是,然后启用PHP通知(E_NOTICE)以获得有关未初始化变量的运行时警告。如果你不这样做,你基本上是在浪费时间和击键来初始化你自己的变量。
chr(32)
表示ASCII空间(即1字节长度的字符串)。
如果你想避免像$myEmpty = " "
与$myEmpty = " "
与错误$myEmpty = ""
有时很难说当有两个空格或人眼的一个或没有。使用chr
功能,确实解决。
而对于真正的空字符串(零个字节),有没有其他办法,只能简单地用(单)引号定义它像$nothing = '';
字符串是不是在PHP第一类对象,所以没有真正的任何其他在你的代码中初始化它们的方法... – rdlowrey 2012-01-27 17:20:20