2012-01-27 69 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 = '';

相關問題