首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 運算符與控制結構精講:從字符串插值到流程控制

     編輯:PHP 綜合知識

夯實語法基礎,編寫邏輯清晰、高效的控制流代碼

運算符與控制結構是程序邏輯的骨架。本文詳細解析 PHP 字符串插值規則、各類運算符優先級與特性、分支循環結構用法及常見陷阱。

一、字符串插值:雙引號 vs 單引號

特性雙引號 " "單引號 ' '
變量解析✅ 支援❌ 輸出字面量
轉義字符✅ 解析 (\n, \t, \\, \$...)❌ 僅支援 \\ 和 \'
性能略慢 (需解析)極快
中文標點陷阱變量後緊跟中文標點可能解析失敗無此問題
<?php
$name = 'Tom';
echo "Hello $name!";      // Hello Tom!
echo 'Hello $name!';      // Hello $name!
echo "Line1\nLine2";      // 實際換行 (源碼可見)
echo 'Line1\nLine2';      // 輸出字面 \n

// 最佳實踐:複雜表達式用 {} 包裹,或改用連接運算符 .
echo "{$user->name}";     // 安全解析對象屬性
echo "Value: " . $val;    // 性能更優、無歧義
?>

二、運算符全景

1. 算術運算符

+ - * / % (取模);** (冪,PHP 5.6+)。

2. 賦值運算符

=、+= -= *= /= %= .= (字符串連接賦值)。

3. 遞增/遞減

<?php
$a = 5;
echo ++$a; // 6 (先增後用)
echo $a++; // 6 (先用後增)
echo --$a; // 5
echo $a--; // 5
?>

4. 比較運算符 (重點)

運算符名稱規則
==等值類型轉換後比較值
===全等類型與值皆相同
!= / <>不等值類型轉換後比較
!==不全等類型或值不同
< > <= >=大小比較字符串按 ASCII 碼比較
<=>太空船運算符 (PHP 7+)返回 -1, 0, 1 表示小於、等於、大於

經典陷阱:'abc' == 0 // true (字符串轉數字為 0),嚴格建議使用 === / !==。

5. 邏輯運算符

&& (AND)、|| (OR)、! (NOT) —— 高優先級。
and、or、xor —— 低優先級 (低於賦值)。

<?php
// 經典陷阱
$result = false || true;  // true
$result = false or true;  // false! 因為 'or' 優先級低於 '='
?>

建議:統一使用 && || !,避免優先級陷阱。

6. 三元運算符 & Null 合並運算符

<?php
// 三元
$status = $age >= 18 ? 'adult' : 'minor';

// 簡寫 (Elvis operator, PHP 5.3+)
$name = $inputName ?: 'Guest'; // 等同 $inputName ? $inputName : 'Guest'

// Null 合並 (PHP 7+)
$username = $_GET['user'] ?? 'Anonymous'; // 變量存在且非 null 則用其值
?>

7. 錯誤抑制運算符 @

@expression 抑制表達式產生的錯誤信息 (不含致命錯誤)。慎用,會隱藏真實問題,影響性能。

三、控制結構

1. if / else / elseif

<?php
if ($score >= 90) { $grade = 'A'; }
elseif ($score >= 80) { $grade = 'B'; }
else { $grade = 'C'; }

// 替代語法 (模板中常用)
if ($cond):
    // ...
elseif ($cond2):
    // ...
else:
    // ...
endif;
?>

2. switch

<?php
switch ($role) {
    case 'admin': echo 'Admin'; break;
    case 'user':  echo 'User'; break;
    default:      echo 'Guest';
}
// 注意:case 比較使用 == (鬆散比較),需注意類型轉換
// PHP 8+ 可用 match 表達式 (嚴格比較、返回值)
?>

3. 循環結構

結構特點適用場景
while先判斷後執行次數未知
do-while先執行後判斷 (至少一次)菜單交互、至少一次處理
for初始化、條件、迭代一體已知次數、計數器需求
foreach專為陣列/對象遍歷遍歷集合 (首選)

4. 跳出控制

  • break:終止當前循環/ switch,繼續執行後續代碼。
  • continue:跳過本次循環剩餘部分,進入下一次迭代。
  • break/continue N:跳出 N 層嵌套循環。
  • exit/die:立即終止腳本執行。
  • return:在函數中返回值並結束函數;在全局腳本中終止執行 (同 exit)。

熟練掌握運算符優先級與控制流最佳實踐,是編寫高質量 PHP 代碼的關鍵一步。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved