字符串中的字符可以在数组之类的结构中使用方括号(如$str[42]),通过从0开始的下标访问和修改,以包围相应的数字。字符串可以认为是字符的数组。函数substr()和substr_可以使用replace()操作多个字符。
注意:PHP7.1.0或更高版本还支持负字符串偏移。从字符串末尾到指定位置的偏移。以前,当以负偏移读取(返回空字符串)时,E_发行NOTICE,写入时E_已提交WARNING(不更改字符串)。
注意:在PHP8.0.0之前,可以使用中括号以相同的目的访问字符串(例如$str{42})。此中括号语法在PHP7.4.0中不推荐,PHP8.0.0不再支持。
注意:
如果加上超过字符串长度的下标,则会拉伸字符串并填充空格。非整数类型的下标将转换为整数。如果下标的类型不正确,则E_出现WARNING级别错误。写入时仅使用指定字符串的第一个字符。在PHP7.1.0时,代入空字符串将导致致命错误;以前代入的值是空字符。
注意:
PHP字符串在内部是字节数组。因此,使用中括号访问或修改字符串对于多字节字符集是不安全的。这只需要对单个字节编码字符串(如ISO-8859-1)执行。
注意:如果将空索引运算符应用于空字符串,则PHP7.1.0或更高版本将抛出致命错误。以前为空的字符串将被默默转换为数组。
示例字符串#17:
<?php // 取得字符串的第一个字符 $str = 'This is a test.'; $first = $str[0]; // 取得字符串的第三个字符 $third = $str[2]; // 取得字符串的最后一个字符 $str = 'This is still a test.'; $last = $str[strlen($str)-1]; // 修改字符串的最后一个字符 $str = 'Look at the sea'; $str[strlen($str)-1] = 'e'; ?>
字符串的下标必须是可转换为整数或整数的字符串。否则,将发出警告。像“foo”这样的下标,以前是默默地转换为0的。
实例#18字符串的无效下标示例:
<?php $str = 'abc'; var_dump($str['1']); var_dump(isset($str['1'])); var_dump($str['1.0']); var_dump(isset($str['1.0'])); var_dump($str['x']); var_dump(isset($str['x'])); var_dump($str['1x']); var_dump(isset($str['1x'])); ?>
输出以上例程:
string(1) "b"
bool(true)
Warning: Illegal string offset '1.0' in /tmp/t.php on line 7
string(1) "b"
bool(false)
Warning: Illegal string offset 'x' in /tmp/t.php on line 9
string(1) "a"
bool(false)
string(1) "b"
bool(false)
注意:
如果使用[]或{}访问其他类型的变量(不包括实现具有相应接口的数组或对象),则隐式返回空值。
注意:
可以在字符串原型中使用[]或{}直接访问字符。
注意:
在PHP7.4中取消了在字符串文字中使用{}访问字符。PHP8.0已被删除。