掌握 PHP 基礎語言特性是撰寫高品質程式碼的前提。本文系統整理字串變數插值、標量/複合/特殊資料型別、隱式/顯式型別轉換、變數與常量定義、運算子優先序與結合性、控制結構(條件/迴圈/跳躍)等核心知識點。
雙引號與 Heredoc 支援變數插值,使用大括號 {} 明確界定變數名稱:
<?php
$hour = 16; $km = 4; $content = "cookie";
echo "4pm 是 {$hour}00 hours.<br>"; // 1600
echo <<<EOT
{$km}000m 在 {$km}km 中.
罐子裡裝滿了 ${content}s.
EOT;
// 輸出: 4000m 在 4km 中. 罐子裡裝滿了 cookies.
?>
輸出字面 {$ 需跳脫:{\$
0 開頭)、十六進位(0x 開頭)、二進位(0b 開頭,PHP 5.4+)0.1+0.7 != 0.8)true / false (不區分大小寫)$arr = ["car"=>"Ferrari", "number"=>21, "city"=>"Ouagadougou"];
null、未賦值、unset() 銷毀發生於:二元運算子、布林運算、需要字串的函數(echo、print、串接運算子 .)
| 語法 | 目標型別 |
|---|---|
| (int) / (integer) | 整數 |
| (float) / (double) / (real) | 浮點數 |
| (string) | 字串 |
| (bool) / (boolean) | 布林值 |
| (array) | 陣列 |
| (object) | 物件 |
| (unset) | NULL (PHP 7.2+ 棄用) |
NULL->0, false->0, true->1, 浮點數截斷小數、字串解析前導數字true->"1", false/NULL->"", 陣列轉換為 "Array" 並觸發 Notice、物件需實作 __toString()[0=>value], NULL->[]stdClass 物件,屬性名為 scalar 或鍵名is_int(), is_float(), is_bool(), is_null(), is_array(), is_object(), is_resource(), is_scalar(), is_callable() - 回傳布林值gettype($var) - 回傳型別字串settype($var, $type) - 強制轉換變數型別(傳址修改)<?php
define("PI", 3.14159);
define("SITE_NAME", "MySite");
// 常量名慣例全大寫,不以 $ 開頭
// 值只能是純量:整數、浮點數、字串、布林值、NULL (PHP 7+)
?>
$b = &$a; 兩個變數指向同一記憶體位置global 或 $GLOBALS)$GLOBALS, $_SERVER, $_GET, $_POST, $_FILES, $_COOKIE, $_SESSION, $_REQUEST, $_ENVPHP 採用「分享無狀態」架構,每次請求獨立執行,變數不在請求間保持(需使用 Session、資料庫、快取等持久化機制)。
| 類別 | 運算子 |
|---|---|
| 算術 | +, -, *, /, %, ** (冪次) |
| 指派 | =, +=, -=, *=, /=, .=, %=, &=, |=, ^=, <<=, >>= |
| 比較 | ==, ===, !=, <>, !==, <, >, <=, >=, <=> (太空船運算子 PHP 7+) |
| 邏輯 | and, or, xor, !, &&, || |
| 位元 | &, |, ^, ~, <<, >> |
| 字串 | . (串接), .= (串接指派) |
| 陣列 | + (聯集), ==, ===, !=, <>, !== |
| 遞增遞減 | ++$a, $a++, --$a, $a-- |
| 錯誤控制 | @ (抑制錯誤訊息) |
| 執行運算子 | `command` (反引號,執行 Shell 指令,安全風險高) |
clone new (non-associative)
[ array() (left)
++ -- ~ (int) (float) (string) (array) (object) (bool) @ (non-associative)
instanceof (non-associative)
! (right)
* / % (left)
+ - . (left)
<< >> (left)
< <= > >= <> (non-associative)
== != === !== (non-associative)
& (left)
^ (left)
| (left)
&& (left)
|| (left)
? : (right)
= += -= *= /= .= %= &= |= ^= <<= >>= (right)
and (left)
xor (left)
or (left)
, (left)
<?php
// if-elseif-else
if ($a == 5) {
echo "等於5";
} elseif ($a == 6) {
echo "等於6";
} else {
echo "其他";
}
// 替代語法 (適合模板)
if ($a == 5):
echo "等於5";
elseif ($a == 6):
echo "等於6";
else:
echo "其他";
endif;
// switch
switch ($i) {
case 0: echo "0"; break;
case 1: echo "1"; break;
case 2: echo "2"; break;
default: echo "其他";
}
?>
<?php
// while
while ($i < 10) { $i++; }
// do-while (至少執行一次)
do { $i++; } while ($i < 10);
// for
for ($i=0; $i<10; $i++) { echo $i; }
for (;;) { if ($i>10) break; echo $i++; } // 無限迴圈寫法
// foreach (陣列/物件遍歷)
foreach ($arr as $val) { ... }
foreach ($arr as $key => $val) { ... }
// 跳躍控制
break; // 跳出當前迴圈/switch
break 2; // 跳出 2 層巢狀迴圈
continue; // 跳過本次迴圈剩餘部分
continue 2;
?>
以上為 PHP 核心語言結構,非函數,不可作為變數函數呼叫。