<?php
define('CONSTANT_NAME', 'value', true); // 第三參數:true=不區分大小寫,預設 false
// 常見用法
define('APP_VERSION', '1.0.0');
define('DB_CONFIG', ['host'=>'localhost', 'port'=>3306]); // PHP 7+ 支援陣列常量
?>
unset() 無效)。MAX_UPLOAD_SIZE)。true,建議保持預設避免混淆。defined('NAME') 檢查是否已定義。++ -- ~ @ 等(單一運算元).、指派等(雙運算元)?:(三運算元)運算時會自動將型別轉換為「表示範圍最寬」的類型,不可逆轉(避免資料遺失):
'123' + 1.5 = 124.5false=0, true=1, null=0, resource=資源ID. 專屬規則<?php $year = 2024; echo '今年是' . $year . '年'; // $year 內部轉為 '2024' 再串接 // 輸出:今年是2024年 ?>
=& 與函數參考回傳<?php
$name = 'Judy';
$alias = &$name; // $alias 成為 $name 別名(類似 C++ 參考)
$alias = 'Jonathan';
echo $name; // 輸出:Jonathan
// 函數參考回傳
function &getConfig() {
static $config = ['debug' => true];
return $config;
}
$cfg = &getConfig(); // 必須雙端加 &
$cfg['debug'] = false;
?>
本質:PHP 參考底層仍是 C 指標機制,指向同一個 zval 容器。
== vs === vs !==| 運算子 | 名稱 | 規則 | 範例結果 |
|---|---|---|---|
== | 相等 | 值相等經過型別轉換 | 1 == '1' → true, 0 == 'abc' → true |
=== | 全等 | 值相等且型別相同,不轉型 | 1 === '1' → false, 1 === 1 → true |
!== | 不全等 | === 取反 | 1 !== '1' → true |
0 == '任意非數字字串' 為 true<?php
var_dump(0 == 'hello'); // true ← 字串轉整數 = 0
var_dump(0 === 'hello'); // false
var_dump('0' == '0.0'); // true ← 數值比較
var_dump('0' === '0.0'); // false
?>
鐵律:除非極確定型別一致,永遠優先使用 ===/!==,避免隱式轉型導致邏輯錯誤。
config/constants.php 統一定義,避免魔術數字散落。===,只有確需型別轉換語意時才用 ==。declare(strict_types=1)(PHP 7+)強制函數參數/回傳型別檢查,從根源杜絕隱式轉型。