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

PHP 易混淆知識點總整理:echo/print、include/require、空值判斷、比較運算子、self/$this、HTTP_HOST/SERVER_NAME

     編輯:PHP 綜合知識

1. echo vs print

特性echoprint
回傳值無永遠回傳 1
多參數支援 echo 'a', 'b', 'c'; (無逗號語法錯誤)單一參數
效能極微幅較快 (無回傳值開銷)略慢
用法建議**慣用輸出**需用於運算式中時 (罕見)

2. include vs require

特性includerequire
失敗行為**警告 (E_WARNING)**,腳本**繼續執行****致命錯誤 (E_COMPILE_ERROR)**,腳本**停止**
條件載入支援 (如 if ($cond) include 'a.php';)**無條件載入**,編譯階段即解析
用法建議選擇性載入、模板片段**核心檔案、設定檔、自動載入器**

3. include_once / require_once

  • 同一請求中**同一檔案只載入一次**
  • 防止函數/類別重複定義錯誤
  • **現代專案用 Composer PSR-4 自動載入,極少手寫 include/require**

4. 空字串 ''、null、0、false 比較表

值gettype()empty()isset()bool 轉換== null=== null
''stringtruetrue (若變數存在)falsetruefalse
nullNULLtruefalsefalsetruetrue
0integertruetruefalsetruefalse
'0'stringtruetruefalsetruefalse
falsebooleantruetruefalsetruefalse
[]arraytruetruefalsetruefalse

核心觀念:empty() 視「假值」為空;isset() 只檢查「變數存在且非 null」;== 類型轉換比較,**永遠優先用 === 嚴格比較**。

5. isset() vs empty() 實務陷阱

6. == (等值) vs === (恆等/全等)

7. self:: vs $this-> (類別內部存取)

存取目標語法條件
常數 constself::CONST靜態、不需實例
靜態屬性/方法 staticself::$prop / self::method()屬於類別,非實例
實例屬性/方法$this->prop / $this->method()需實例化物件
name = $n; }
    public function greet() { echo "Hi, {$this->name}"; }
}
Demo::getVersion(); // 靜態呼叫
$obj = new Demo();
$obj->setName('A');
$obj->greet();
?>

8. strstr/stristr vs strpos/stripos

函數大小寫回傳值效能
strstr敏感找到後的**子字串** (含針)較慢 (需複製字串)
stristr不敏感子字串較慢
strpos敏感**位置索引 (int)** 或 false**最快** (僅回傳索引)
stripos不敏感位置索引快

9. $_SERVER['HTTP_HOST'] vs $_SERVER['SERVER_NAME']

情境HTTP_HOSTSERVER_NAME
正常 (Port 80, Host 標頭正確, Apache ServerName 正確)example.comexample.com
非標準 Port (8080)example.com:8080example.com
ServerName = example.com, 訪問 www.example.com (ServerAlias)www.example.comexample.com
HTTP/1.0 無 Host 標頭可能空/不準ServerName 值

結論:**優先用 HTTP_HOST** (反映客戶端實際請求);Port 映射/內網穿透用 HTTP_X_FORWARDED_HOST。SERVER_NAME 受伺服器設定影響,不可靠。

10. 總結:避坑速查表

  1. 輸出用 echo,多參數用逗號
  2. 核心檔案用 require_once (或自動載入)
  3. 判斷變數「有值」用 isset() + !== '',勿用 empty()
  4. 比較**永遠用 ===**
  5. 靜態成員用 self::,實例成員用 $this->
  6. 搜尋子字串用 strpos/stripos (檢查 !== false)
  7. 取網域用 $_SERVER['HTTP_HOST']
  8. null、0、''、false、[] 皆為「假值」,empty() 全真
  9. 字串 '0' 是假值,**資料庫 ID 為 '0' 字串時特別注意**
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved