變量作用域與超全局
局部 vs 全局
<?php
$x = 5; // 全局變量
function test() {
$y = 10; // 局部變量
global $x; // 引用全局 $x
$x += $y;
}
test();
echo $x; // 15
// 或者用 $GLOBALS 超全局數組
function test2() {
$GLOBALS['x'] += 10;
}
八大超全局變量(自動全局可用)
| 變量 | 用途 | 常用鍵示例 |
$GLOBALS | 所有全局變量引用 | $GLOBALS['x'] |
$_SERVER | 服務器與執行環境信息 | REQUEST_METHOD, HTTP_HOST, REMOTE_ADDR, SCRIPT_FILENAME |
$_GET | URL 查詢字符串參數 | ?id=1 → $_GET['id'] |
$_POST | POST 請求體表單數據 | application/x-www-form-urlencoded |
$_REQUEST | $_GET + $_POST + $_COOKIE 合集 | 不區分來源(不推薦常用) |
$_FILES | 文件上傳信息 | name, type, tmp_name, error, size |
$_COOKIE | 客戶端 Cookie | $_COOKIE['session_id'] |
$_SESSION | 服務端會話數據 | $_SESSION['user_id'] |
$_ENV | 環境變量 | $_ENV['APP_ENV'] |
常量定義與魔術常量
// 定義常量(區分大小寫,慣例全大寫)
define('APP_NAME', 'MyApp');
define('DEBUG', true, true); // 第三參數 true = 大小寫不敏感
// 類常量
class Config {
const VERSION = '1.0.0';
}
echo Config::VERSION;
// 魔術常量(雙下劃線包裹)
__FILE__ // 當前文件完整路徑
__DIR__ // 當前文件目錄(PHP 5.3+)
__LINE__ // 當前行號
__FUNCTION__ // 當前函數名
__CLASS__ // 當前類名
__METHOD__ // 當前方法名(類::方法)
__TRAIT__ // 當前 Trait 名
__NAMESPACE__ // 當前命名空間
echo vs print vs var_dump
echo:語言構造,可多參數 echo 'a', 'b',無返回值,速度最快
print:語言構造,單參數,返回 1,可用於表達式 $x = print 'hi'
var_dump():函數,輸出類型+長度+值,調試必備
print_r():函數,友好格式輸出數組/對象,print_r($arr, true) 返回字符串
比較運算符陷阱
| 運算符 | 名稱 | 示例 | 結果 | 注意 |
== | 等值 | '123' == 123 | true | 類型轉換後比較 |
=== | 全等 | '123' === 123 | false | 類型+值均相同 |
!= / <> | 不等值 | 1 != '1' | false | 同 == |
!== | 不全等 | 1 !== '1' | true | 同 === |
<=> | 太空船 | 1 <=> 2 | -1 | PHP 7+,返回 -1/0/1 |
鐵律:默認使用 ===/!==,除非明確需要類型轉換比較。
正則表達式入門核心
元字符速記
. 任意字符(除換行)
\d 數字 [0-9]
\D 非數字
\w 單詞字符 [a-zA-Z0-9_]
\W 非單詞字符
\s 空白字符
\S 非空白字符
^ 字符串開頭
$ 字符串結尾
\b 單詞邊界
| 或
() 分組捕獲
(?:) 非捕獲分組
?= 正向前瞻
?! 負向前瞻
量詞
preg_match('/pattern/', $str, $matches); // 單次匹配
preg_match_all('/pattern/', $str, $matches); // 全局匹配
preg_replace('/pattern/', $replacement, $str); // 替換
preg_split('/pattern/', $str); // 分割
preg_grep('/pattern/', $arr); // 數組過濾
經典驗證模式
- 上一篇文章: Windows 7/10/11 下 Composer 快取目錄位置與遷移配置指南
- 下一篇文章: PHP 函數進階:作用域、靜態變量、變量函數、回調與內部函數分類
Copyright ©
程式碼之家 All Rights Reserved