2012-01-27 87 views
20

在C#中,我已经开始采取初始化空字符串的方法如下:在PHP中初始化空字符串的正确方法是什么?

string account = string.empty; 

而不是

string account = ""; 

据我的导师和其他C#开发人员我已经说过了,在第一种方法是更好的做法。

这就是说,有没有更好的方式来初始化PHP中的空字符串?目前,我看到下面广泛应用于:

$account = ''; 

感谢。

+3

字符串是不是在PHP第一类对象,所以没有真正的任何其他在你的代码中初始化它们的方法... – rdlowrey 2012-01-27 17:20:20

回答

22

你在做什么是正确的。没什么可说的。

例子:

$account = ''; 

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

echo $account; 

你可以得到愚蠢的,做这样的事情:

$str = (string) NULL; 

..但是那是毫无意义的,它是完全一样的东西 - 一个空字符串。

你做得对。

+0

那么:$ account = null; ? – kaspnord 2012-01-27 17:26:25

+0

是的,这将工作正常。这是所有上下文相关的,你可能想在稍后看看值是'NULL'而不是'“”'(空字符串)(但实际上你不需要)。你的方法更清晰,你可以马上告诉var是一个字符串。弱打字可能是你的朋友或敌人。 – 2012-01-27 17:27:50

3

这里有一些其他的东西在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 
} 

通常我会尽量避免初始化这样的增值经销商。相反,我会本地化,或者在整个代码中检查是否存在,否则最终会保留一组变量,这些变量在初始化后可能不会实际反映整个代码中的用法。

+0

谢谢,这很有帮助。不幸的是,我没有足够的代表来回答你的答案。 – kaspnord 2012-01-27 17:33:25

+0

不用担心,用PHP玩得开心。 – 2012-01-27 17:36:43

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 

一个需要注意的是,选择功能检查变量类型(如确实全等检查,===)。例如,下面的失败:

$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)以获得有关未初始化变量的运行时警告。如果你不这样做,你基本上是在浪费时间和击键来初始化你自己的变量。

0

chr(32)表示ASCII空间(即1字节长度的字符串)。

如果你想避免像$myEmpty = " "$myEmpty = " "与错误$myEmpty = ""

有时很难说当有两个空格或人眼的一个或没有。使用chr功能,确实解决。

而对于真正的空字符串(零个字节),有没有其他办法,只能简单地用(单)引号定义它像$nothing = '';

相关问题