2013-02-24 43 views
0

使用& $ key和& $ value引用代替$ payload [$ key] ...是更好還是更高性能...然後銷燬在foreach循環之後使用unset引用?

或者是我的方式,罰款最佳實踐...如果沒有,請舉個例子:

foreach ($payload as $key => $value) { 
    if (is_array($value)) { 
    $payload[$key] = mysqli_real_escape_string($db_connection, implode(',', $value)); 
    } else { 
    $payload[$key] = mysqli_real_escape_string($db_connection, $value); 
    } 
} 
+1

沒關係。即使有一些性能影響,它也是微不足道的。而且我不覺得按鍵可以參考 – 2013-02-24 21:15:21

+1

這是更有效地使用比手工日逃逸準備語句。其餘的使用探查器,而不是猜測。 – mario 2013-02-24 21:15:55

+0

可讀性勝過每次這樣微小的差異。 – deceze 2013-02-24 21:16:05

回答

2

所以性能一般分爲三類 - CPU,內存或I/O操作。在你的情況下,我們正在談論記憶。

如果你迫切需要保存的拷貝,而不是按值情況下的內存,使用引用(& $值)。但我經常發現這是一個不成熟的優化。考慮這個值會在內存中存在多久:有多少用戶甚至擊中了這個給定的函數?函數的範圍是什麼?等

所以更擔心維修 - 使代碼理解到旁邊的人或自己在三個月內 - 比夫婦你可能會節省千字節。

附加說明:在這種情況下,使用引用(&$value)將節省內存,因爲您要更改$value。但是,如果你正在做的是讀取值,那麼它確實沒有在所有問題......有一段時間了,PHP的默認行爲(即當你不使用&)是實際參考複製到陣列你改變他們,在這一點上它首先複製他們。

+0

我編輯它並刪除了我的評論。感謝您指出了這一點。 – 2013-02-24 21:27:50