PHP 允許使用方括號 [] 或大括號 {}(不推薦)以「零基底索引」直接存取或修改字串中的單一字元,這使得字串在某些場景下可視為「唯讀/可寫的字元陣列」。
<?php
$str = 'phpddt.com';
// 讀取:取得最後一個字元
echo $str[strlen($str) - 1]; // m
// 修改:將第一個字元改為 'a'
$str[0] = 'a'; // "ahpddt.com"
// 索引越界:自動補空白再寫入
$str = 'phpddt.com';
$str[100] = 'y'; // "phpddt.com" + 90 個空白 + "y"
// 非整數索引會被強制轉型為整數
$str = 'phpddt.com';
$str['a'] = 'y'; // 等同 $str[0] = 'y' → "yhpddt.com"
// 負數索引:PHP 7.1+ 拋出 Warning: Illegal string offset
$str[-1] = 'y'; // 錯誤,不支援負索引
[]:{} 語法已被棄用,未來版本可能移除。mb_substr()、mb_str_split() (PHP 7.4+) 或轉為陣列操作。str_split() 處理完再 implode()。<?php
$str = 'Hello World';
$first = $str[0]; // H
$last = $str[strlen($str)-1]; // d
// PHP 7.1+ 可用負數索引於函數回傳值(但不可直接用於字串寫入)
$last = $str[-1]; // 僅限讀取,寫入會報錯
善用字串陣列化存取,能在解析固定格式字串(如 CSV 行、定長報文、簡單模板替換)時寫出簡潔高效的代碼,但務必記住「位元組語義」與「多位元組陷阱」,避免在多語言環境產生難以排查的 Bug。