函數是 PHP 強大的核心,但許多實用函數未被充分利用。以下介紹 10 個不常見但極具價值的函數,助你寫出更高效的代碼。
回傳包含三個元素的陣列,分別代表過去 1、5、15 分鐘的平均負載。可用於在系統過載時主動終止腳本,避免伺服器當機。注意:Windows 環境不支援。
可將 md5() 回傳的 32 位十六進位字串轉為 16 位二進位字串,節省儲存空間。
快速取得指定年份、月份的總天數,處理日期邏輯更簡潔。
WordPress 常見函數,搭配 gettext() 實現網站多語系化,參考 PHP 手冊相關章節。
取得用戶瀏覽器類型及支援功能,需先準備 php_browscap.ini 參考檔。判斷依據為該瀏覽器一般特性,若用戶關閉 JavaScript 則無法偵測,但瀏覽器類型與作業系統判斷準確度高。
輸出呼叫堆疊追蹤,快速定位邏輯錯誤。範例:
- $a = 0;
- function iterate() {
- global $a;
- if( $a < 10 )
- recur();
- echo $a . “, “;
- }
- function recur() {
- global $a;
- $a++;
- // how did I get here?
- echo “nnn”;
- debug_print_backtrace();
- if( $a < 10 )
- iterate();
- }
- iterate();
回傳單字的 metaphone 值,發音相同的單字值相同,可用於模糊搜尋或拼字檢查。
依人類直覺排序陣列(如 5, 55, 100, 110),而非 ASCII 排序(100, 110, 5, 55)。範例:
- $items = array(
- “100 apples”, “5 apples”, “110 apples”, “55 apples”
- );
- sort($items);
- print_r($items);
- natsort($items);
- print_r($items);
回傳將一字串轉為另一字串所需的插入、替換、刪除次數,可用於「您是否要找...」功能。範例:
- $dictionary = array(
- “php”, “javascript”, “css”
- );
- $word = “japhp”;
- $best_match = $dictionary[0];
- $match_value = levenshtein($dictionary[0], $word);
- foreach($dictionary as $w) {
- $value = levenshtein($word, $w);
- if( $value < $match_value ) {
- $best_match = $w;
- $match_value = $value;
- }
- }
- echo “Did you mean the ‘$best_match’ category?”;
以模式匹配取得檔案列表,取代繁瑣的 opendir()/readdir()/closedir()。範例:
- foreach (glob(“*.php”) as $file)
- echo “$filen”;