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

PHP 字串像陣列一樣存取與修改字元的完整指南

     編輯:PHP 相關知識

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'; // 錯誤,不支援負索引

關鍵注意事項

  1. 優先使用 []:{} 語法已被棄用,未來版本可能移除。
  2. 單一字元限制:只能賦值長度為 1 的字串,多字元僅取第一個字元。
  3. 多位元組字串陷阱:UTF-8 中文每字佔 3~4 位元組,直接按位元組索引修改會導致亂碼。處理中文請改用 mb_substr()、mb_str_split() (PHP 7.4+) 或轉為陣列操作。
  4. 效能特性:讀取單字元為 O(1);但頻繁修改長字串會觸發多次記憶體重新分配,大量操作建議先轉陣列 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。

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