撰寫高效能的 PHP 程式碼不僅關乎語法熟悉度,更在於掌握底層執行機制與最佳實踐。以下整理 18 個關鍵優化要點,涵蓋語法選擇、記憶體管理、資料庫操作等面向,助你寫出更精簡、執行更快速的程式碼。
$this,宣告為 static 可提升約 4 倍呼叫速度。echo 取代 print:echo 為語言結構,無回傳值,執行更輕量;且支援多參數以逗號分隔(echo $a, $b),避免字串連接開銷。echo 中直接傳遞多個參數,比 echo $a . $b 更有效率。@ 抑制錯誤:錯誤抑制運算子會帶來顯著效能損耗,應改用條件判斷或自定義錯誤處理。++$i 快於後置 $i++:前置遞增僅需 3 條 opcode,後置需 4 條並產生暫存變數。$row['id'] 比 $row[id] 快約 7 倍,後者會先嘗試尋找常數 id。<?php
// 推薦寫法
$max = count($array);
for ($i = 0; $i < $max; $i++) {
echo $i;
}
// 避免寫法
for ($i = 0; $i < count($array); $i++) {
echo $i;
}
?>
foreach 替代 for:foreach 針對陣列遍歷最佳化,若需修改值可用引用 foreach ($arr as &$v)。switch 替代多重 if-else:switch 在多條件分支下結構更清晰,且內部有跳躍表最佳化。unset() 釋放大型變數:特別是大型陣列或物件,雖不會立即歸還 OS,但會歸入 PHP 記憶體池供重複使用。$this->prop++ 比區域變數慢 3 倍。include '/full/path/file.php' 避免在 include_path 中遞迴搜尋。strncasecmp、strpbrk、stripos 等字串函式比 PCRE 快得多。strtr > str_replace > preg_replace:單字元替換用 strtr 效率最高(約為 str_replace 4 倍)。echo 快 2~20 倍。mod_deflate/mod_zip 壓縮傳輸:可降低 80% 傳輸量,大幅提升頁面載入速度。掌握這些習慣並非死記硬背,而是建立「效能意識」。實務上建議搭配 Xdebug Profiler 或 Blackfire 等工具定期剖析瓶頸,針對性優化才能事半功倍。