2010-07-12 59 views
4

我在前幾天看到,在if語句中分配值不是一個好主意。 說實話,我實際上使用了很多,例如PHP - 在if語句中分配值

if(isset($_POST) && $post = $_POST) { 
    print_r($post) 
} 

知道爲什麼,是不是最佳的?

+2

這被稱爲不良做法。 ;) – Savageman 2010-07-12 09:42:48

回答

13

並非不重要,因爲忘記賦值和平等運算符是不同的常見的新手錯誤,因此很容易導致混淆或難以檢測到的錯誤。

的可讀性你的代碼比任何微的優化

8

因爲它不是最優的,而是關於標準,慣例,條件需要比較而不是分配。

不要造成混亂,Noobs可能會坐幾個小時調試問題!

4

你可以迷惑讀者,如果你不小心輸錯$post == $_POST$post = $_POST更重要。 一般來說它並沒有真正提高可讀性在你的代碼... 此外它往往是沒有必要用「如果」

3

好了,獨自一人,分配在邏輯運算符並不壞檢查分配:

if ($id = $_GET['id']) { 

while($row = mysql_fetch_assoc($res)) { 

我們很經常使用。
雖然它仍然存在可讀性故障或混合===操作員的危險。

但是在一個語句中混合邏輯和賦值操作符是不好的。這被稱爲混淆和perl只寫風格,使得閱讀這段代碼更加困難。

所以,最好寫爲

if(isset($_POST)) { 
    $post = $_POST; 
    print_r($post); 
} 

雖然這特定的語句是相當無意義。
$ _POST總是設置在任何合理的環境中,並將其分配給另一個變量,這些變量在大多數時間不是必需的