在C#中,我已經開始採取初始化空字符串的方法如下:在PHP中初始化空字符串的正確方法是什麼?
string account = string.empty;
而不是
string account = "";
據我的導師和其他C#開發人員我已經說過了,在第一種方法是更好的做法。
這就是說,有沒有更好的方式來初始化PHP中的空字符串?目前,我看到下面廣泛應用於:
$account = '';
感謝。
在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