萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP 常用系統函數大全:字串、日期、數學、陣列、檔案、型別判斷速查表

前言

PHP 內建超過 1000 個函數,熟練掌握高頻核心函數能大幅提升開發速度與程式碼品質。本文將常用函數分類整理為七大類,附上語法、參數、回傳值與實務範例,適合開發時快速查閱。

一、字串函數

函數說明範例
strlen($str)位元組長度strlen('中文') // 6 (UTF-8)
mb_strlen($str, 'UTF-8')字元長度(多位元組安全)mb_strlen('中文', 'UTF-8') // 2
substr($str, $offset, $len?)位元組層級截取substr('abcde', 1, 2) // 'bc'
mb_substr($str, $offset, $len?, 'UTF-8')字元層級截取mb_substr('你好世界', 0, 2, 'UTF-8') // '你好'
strpos($haystack, $needle, $offset?)尋找首次出現位置(區分大小寫)strpos('abcde', 'cd') // 2
stripos()不區分大小寫尋找stripos('AbC', 'bc') // 1
str_replace($search, $replace, $subject, &$count?)替換(支援陣列)str_replace(['a','b'], 'x', 'abc') // 'xxc'
preg_match($pattern, $subject, &$matches?)正則單次匹配preg_match('/\d+/', 'age 25', $m) // 1, $m[0]='25'
preg_match_all($pattern, $subject, &$matches?)正則全域匹配preg_match_all('/\d+/', '2023-05-01', $m) // $m[0]=['2023','05','01']
explode($sep, $str, $limit?)分割字串為陣列explode(',', 'a,b,c') // ['a','b','c']
implode($glue, $pieces)陣列合併為字串implode('-', ['a','b']) // 'a-b'
trim($str, $charlist?)移除首尾空白/指定字元trim(' hi ') // 'hi'
mb_strtolower/strtoupper($str, 'UTF-8')多位元組大小寫轉換mb_strtoupper('ß', 'UTF-8') // 'SS'

二、日期時間函數

函數說明範例
time()目前 Unix 時間戳(秒)time() // 1683000000
date($format, $timestamp?)格式化日期date('Y-m-d H:i:s') // '2023-05-02 10:00:00'
strtotime($datetime, $base?)英文文字轉時間戳strtotime('+1 week') // 未來一周
microtime(true)微秒級浮點數時間戳microtime(true) // 1683000000.1234
date_default_timezone_set('Asia/Taipei')設定預設時區建議在 bootstrap 階段設定
new DateTime()物件導向日期操作(推薦)$dt = new DateTime(); $dt->modify('+1 day');

三、數學函數

函數說明範例
abs($num)絕對值abs(-5) // 5
floor($num)向下取整floor(3.9) // 3
ceil($num)向上取整ceil(3.1) // 4
round($num, $precision, $mode?)四捨五入(支援銀行家演算法)round(3.14159, 2) // 3.14
mt_rand($min, $max)梅森旋轉隨機整數(推薦)mt_rand(1, 100)
random_int($min, $max)密碼學安全隨機整數random_int(1, 100)
pi()圓周率常數pi() // 3.1415926535898

四、陣列函數

函數說明範例
count($arr, $mode?)元素個數count([1,2,3]) // 3
array_keys($arr)取得所有鍵名array_keys(['a'=>1,'b'=>2]) // ['a','b']
array_values($arr)取得所有值(重新索引)array_values(['a'=>1,'b'=>2]) // [1,2]
array_merge($arr1, $arr2...)合併陣列(字串鍵後覆蓋前)array_merge(['a'=>1],['a'=>2]) // ['a'=>2]
array_push($arr, $val...)尾端壓入(堆疊)$a=[1]; array_push($a,2); // [1,2]
array_pop($arr)尾端彈出$a=[1,2]; array_pop($a); // 2
array_unshift($arr, $val...)頭端壓入(佇列)$a=[2]; array_unshift($a,1); // [1,2]
array_shift($arr)頭端彈出$a=[1,2]; array_shift($a); // 1
in_array($needle, $haystack, $strict?)檢查值存在in_array(2, [1,2,3]) // true
array_map($callback, $arr...)映射轉換array_map('strtoupper', ['a','b']) // ['A','B']
array_filter($arr, $callback?)過濾元素array_filter([1,2,3], fn($x)=>$x>1) // [2,3]
array_reduce($arr, $callback, $initial?)減少/累加array_reduce([1,2,3], fn($c,$v)=>$c+$v, 0) // 6

五、資料結構模擬

  • 堆疊:array_push() 入棧,array_pop() 出棧
  • 佇列:array_push() 入隊,array_shift() 出隊
  • 雙向佇列:SplDoublyLinkedList(O(1) 頭尾操作)
  • 堆積:SplHeap、SplPriorityQueue
  • 固定長度陣列:SplFixedArray(記憶體效率高)

六、型別判斷與轉換

函數說明備註
gettype($var)取得型別字串'integer', 'double', 'string', 'array', 'object', 'resource', 'NULL', 'boolean'
settype($var, $type)強制轉換(修改原變數)回傳 bool
is_int/is_float/is_bool/is_string/is_array/is_object/is_null/is_resource/is_scalar/is_numeric/is_callable/is_iterable/is_countable型別檢查回傳 bool,is_numeric 含純數字字串
(int)$var / intval($var)轉整數
(float)$var / floatval($var)轉浮點數
(string)$var / strval($var)轉字串
(bool)$var轉布林
(array)$var轉陣列物件轉為屬性陣列

七、檔案系統操作

函數說明範例/備註
file_exists($path)檔案/目錄是否存在回傳 bool
is_file($path) / is_dir($path)判斷檔案/目錄
mkdir($path, $mode, $recursive)建立目錄mkdir('a/b/c', 0755, true)
rmdir($path)刪除空目錄
unlink($path)刪除檔案
copy($src, $dest)複製檔案
rename($old, $new)重命名/移動
file_get_contents($path)一次讀取整檔大檔案慎用
file_put_contents($path, $data, $flags?)寫入檔案FILE_APPEND 追加模式
fopen($path, $mode)開啟檔案指標模式:r, w, a, r+, w+, a+, b (二進位)
fread($handle, $length)讀取指定長度
fwrite($handle, $string)寫入(覆蓋指標位置)
fseek($handle, $offset, $whence?)移動指標SEEK_SET, SEEK_CUR, SEEK_END
fclose($handle)關閉指標
filesize($path)檔案大小(位元組)
filemtime($path)最後修改時間(時間戳)
fileperms($path)權限(八進制)substr(sprintf('%o', fileperms($file)), -4)
glob($pattern, $flags?)模式匹配檔案glob('*.php')
scandir($dir, $order?)列出目錄內容含 . 與 ..

結語

本文整理的函數涵蓋 PHP 開發 90% 的日常場景。建議:

  1. 優先使用 多位元組安全函數(mb_* 系列)處理中文
  2. 日期操作改用 DateTime 類別,避免 2038 年問題與時區坑
  3. 陣列操作善用 array_map/array_filter/array_reduce 函數式風格
  4. 檔案操作大檔案必用 資源流 (fopen/fread/fwrite) 避免記憶體溢位
  5. 隨時查閱 PHP 官方函數參考 獲取最新簽章與行為
copyright © 萬盛學電腦網 all rights reserved