基本語法規則
- 單行註解:
// 或 #
- 多行註解:
/* ... */
- 語句以分號
; 結尾(必要)
- 大小寫敏感:變數、常數、類別名稱均區分大小寫;函數名不區分
- 變數以
$ 開頭:$var = 1;
變數與常數
| 特性 | 變數 | 常數 |
| 定義方式 | 直接賦值 $pi = 3.14; | define('PI', 3.14); |
| 名稱前綴 | 必須有 $ | 無 $ |
| 修改性 | 可隨時修改 | 定義後不可變 |
| 作用域 | 受區域/全域規則限制 | 全域可存取,不受作用域限制 |
| 資料型別 | 任意型別 | 僅限標量 |
八大資料類型
標量類型(4 種)
- Boolean:
true / false
- Integer:十進位
10、八進位 012(=10)、十六進位 0x1F(=31)
- Float:
12.34、科學標記 1.2e3(=1200)
- String:三種定義方式差異見下表
字串三種定義差異對照
| 特性 | 單引號 | 雙引號 | Heredoc (<<<) |
| 變數解析 | 否 | 是 | 是 |
| 跳脫字元 | \' \\ | \n \r \t \\ \$ 等 | 同雙引號 |
| 多行支援 | 否 | 否 | 是 |
| 結尾標記 | 單引號 | 雙引號 | 自訂標識符(須獨佔一行、無縮排) |
$i = 5;
echo "$i = $i"; // 5 = 5
echo '$i = $i'; // $i = $i
echo <<
複合類型
- Array:有序映射,鍵可為整數或字串
- Object:類別實例
特殊類型
- Resource:外部資源控制代碼(如資料庫連線、檔案指標)
- NULL:僅有
null 一值,表示無值
傳值 vs 參考傳遞
| 類型 | 預設行為 | 強制參考語法 |
| 標量、陣列、NULL | 值傳遞(複製) | $b = &$a; |
| Object、Resource | 參考傳遞(複製控制代碼) | 預設即為參考 |
$a = 10;
$b = &$a; // 參考
$b = 20;
echo $a; // 20
// 物件預設參考行為
$obj1 = new stdClass();
$obj1->val = 1;
$obj2 = $obj1; // 複製 handle
$obj2->val = 2;
echo $obj1->val; // 2
運算子完整分類
算術
+ - * / % **(冪,PHP 5.6+)
++ -- 前置/後置差異同 C/Java
比較
| 運算子 | 名稱 | 說明 |
== | 相等 | 型別轉換後比較(鬆散比較) |
=== | 全等 | 型別與值皆相同 |
!= / <> | 不相等 | 鬆散比較 |
!== | 不全等 | 型別或值不同 |
<=> | 太空船 | PHP 7+,回傳 -1/0/1,適合 usort |
邏輯
&& (AND) 、 || (OR) 、 ! (NOT) — 短路求值
字串
. 串接 、 .= 串接賦值
位元
& | ^ ~ << >> 僅針對整數二進位運算
賦值
= += -= *= /= %= .= &= |= ^= <<= >>=
三元/Null 合併(PHP 7+)
$result = $condition ? 'yes' : 'no'; // 三元
$name = $inputName ?? 'Guest'; // Null 合併
$name = $inputName ?: 'Guest'; // Elvis 運算子(假值時用預設)
型別轉換
自動轉換(語境轉換)
10 + "3abc" // 13 (字串開頭數字)
10 + "abc" // 10 (非數字開頭視為 0)
"10" + "5" // 15
"abc" + "def" // 0
強制轉換(Cast)
(int) "3.5abc" // 3
(float) "3.5abc" // 3.5
(string) 123 // "123"
(bool) "" // false
(bool) "0" // false (注意!)
(bool) "false" // true (非空字串皆為 true)
轉 Boolean 判斷表(必背)
| 值 | (bool) 結果 |
false, 0, 0.0, "", "0", [], null | false |
其他所有值(含 "false", [-1], new StdClass()) | true |
運算子優先級(高→低)
clone new
**
++ -- ~ (int) (float) (string) (array) (object) (bool) @
instanceof
!
* / %
+ - .
<< >>
< <= > >=
== != === !== <=>
&
^
|
&&
||
??
? :
= += -= *= **= /= .= %= &= |= ^= <<= >>= ??=
and
xor
or
,
建議:複雜表達式務必加括號明確優先級,提升可讀性並避免 Bug。
- 上一篇文章: PHP 實作四大經典排序演算法:氣泡、選擇、插入、快速排序
- 下一篇文章: PHP MySQL 基礎操作完整指南:從連線到 CRUD
Copyright ©
程式碼之家 All Rights Reserved