懶人包。
列表
phpinfo()
打開後瀏覽器後會顯示 PHP 版本資訊:
1 | phpinfo() |
$conn->insert_id
取得上一筆 auto_increment 產生的 id 值
1 | $name = 'PeaNu'; |
var_dump(variable)
可以查看比較複雜的資料結構,或者是 function 的回傳值。
查看 Array 的值:
1 | <?php |
Output:
1 | array(3) { ["name"]=> string(5) "PeaNu" ["age"]=> int(20) ["isMarry"]=> bool(true) } |
查看 isset()
的回傳值:
1 | <?php |
isset(variable)
如果變數沒有值或值是 null 就回傳 true,不然回傳 false。
備註:這個判斷機制跟 JS 不太一樣,空字串不是 null 所以會回傳 true 不是 false。
1 | <?php |
empty(expression)
檢查是不是空值(Null、空字串、0):
1 | <?php |
print_f(variable)
可以看變數的值,比 var_dump
簡潔一點:
1 | <?php |
1 | Array ( [name] => PeaNu [age] => 20 ) |
exit('...')
die('...')
輸出訊息後退出(跟 return 很類似):
1 | <?php |
gettype(data)
查看資料型態
1 | <?php |
sprintf()
格式化字串,可以想成是 template string 的概念。
1 | $format = 'PeaNu has %d dollars and "%s" .'; |
header()
設定 resonse header 的值
1 | // 代表重新導向到 index.php 的位置 |
http_response_code()
設定 HTTP status code:
1 | // 回傳 422 |
require_once('file.php')
把檔案引入,已經有引入過的話就不會重複引入
1 | require_once('index.php'); |
time()
取得從 1970 到現在的時間(秒數)
1 | time() // 1644216655 |
setcookie($key, $value, $expire)
設定 cookie 內容
1 | // 30 days |
date($formate)
格式化輸出日期
格式表:date_format
1 | echo date('Y-m-d-H-i-s'); // 2022-02-07-07-56-58 |
getrandmax()
取得 rand 能產生的最大值
1 | echo getrandmax(); // 2147483647 |
rand($min, $max)
產生亂數,可指定範圍。沒有指定的話就會從 0 ~ 2147483647:
1 | echo rand(10, 15); // [10 ~ 15](閉區間) |
chr($ascii)
根據 ascii 碼來輸出字串
1 | echo chr(65); // A |
ord($string)
回傳字串的 ascii 碼
1 | echo ord('a'); // 97 |
password_hash($password, format)
內建的雜湊函式,前面填明碼,後面填雜湊的演算法:
1 | <?php |
password_verify($password, hash)
用雜湊值檢查密碼是否正確:
1 | <?php |
htmlspecialchars($string, option)
把輸入的字串做跳脫
備註:要注意丟進去的資料都會被轉成「字串」回傳
1 | /* |
strlen
回傳字串長度
1 | echo strlen('some text'); // 9 |
strtolower
轉小寫
1 | echo strtolower('ABC'); // abc |
strtoupper
轉大寫
1 | echo strtoupper('abc'); // ABC |
str_contains($string, $search)
字串裡有沒有包含某段字(有分大小寫)
附註:這個是 PHP 8 推出的,所以要特別注意。替代方案可以參考 Stack overflow
1 | var_dump(str_contains('abc', 'a')); // bool(true) |
str_replace($replace, $newString, $string)
替換字串
附註:跟 JS 不一樣,這會把所有符合的字都換掉
1 | <?php |
explode($separator)
跟 JS 的 split()
一樣,回傳值也是陣列。
1 | $date = '2022-02-17 23:22:22'; |
intval($str)
把資料型態轉成數字
1 | var_dump(intval('10')); // [int] => 10 |
或也可以像 JS 裡的 parseInt(string, base)
來決定用幾進位解析:
1 | var_dump(intval('100', 2)); // int (4) |
數學相關
floor($number)
無條件捨去
注意:回傳值是 float 不是 int
1 | var_dump(floor(1.5)); // float(1) |
ceil($number)
無條件進位
注意:回傳值是 float 不是 int
1 | var_dump(ceil(1.3)); // float(2) |
round($number)
四捨五入
注意:回傳值是 float 不是 int
1 | var_dump(round(1.3)); // float(1) |
陣列相關
array('key' => 'value')
建立 Array(或想成 Object)
1 | <?php |
sizeof(array)
查看 Array 的長度
1 | <?php |
array_push($array, $value)
新增元素到最後面
1 | $my_array = array(1, 2, 3, 4); |
裡面也可以 push 字串、陣列或物件的資料,就跟 JS 一樣。
array_unshift($array, $value)
新增元素到最前面
1 | $my_array = array(1, 2, 3, 4); |
array_pop($array)
刪除最後一個元素
1 | $my_array = array(1, 2, 3, 4); |
array_shift($array)
刪除第一個元素
1 | $my_array = array(1, 2, 3, 4); |
array_map($callback, $array)
跟 JS 的 Array.map() 一樣,不過要注意 PHP 不能像 JS 一樣把 function 當參數傳,所以寫法不太一樣:
1 | // 先定義好 function |
避免 SQL Injection 的方法
要改用 Prepared Statements 的方式來下 SQL:
1 | // login.php |
bind_param()
有四種型別:
i
(integer)d
(double)s
(string)b
(Boolean)
內建變數
$_GET['id']
取得 GET 的 id 值$_POST['id']
取得 POST 的 id 值$_SESSION['username']
SESSION 中 username(讀取或設定)$_SERVER['REQUEST_URI']
取得路徑(Domain 下的路徑)$_SERVER['HTTP_HOST']
取得域名(主機名稱)$_COOKIE['username']
取得 COOKIE 中的 username