
在PHP中字符串可以看成是一个下标从0开始的字符数组组成,可以用类似数组结构中的方括号包含对应的数字来访问和修改字符串,如$str[2]。字符串可以用花括号访问,如$str{2}。在PHP5中如果下标为负数或者超出字符长度时,会产生一个E_NOTICE级别的错误,并返回空字符串;在PHP7中如果下标为负数,会从字符串末尾向前计算下标,最后一位下标为-1,向前依次递减。超出字符长度时,会产生一个E_NOTICE级别的错误,并返回空字符串。非整数下标会转换成整数。
在用下标赋值时,如果下标超出字符串长度,会将字符串拉伸并用空字符串填充。在PHP5中如果下标为负数,则会产生一个警告,字符串不会有任何变化,在PHP中如果下标为负数会从字符串末尾向前计算下标,并在指定位置赋值。当负数下标超出字符串长度时也会产生一个警告,字符串不会有任何变化。在PHP5中如果给字符串赋值空字符,则会赋值一个空格,而在PHP7中则会产生一个警告,字符串不会有任何变化。
PHP 的字符串在内部是字节组成的数组。因此用花括号访问或修改字符串对多字节字符集很不安全。仅应对单字节编码例如 ISO-8859-1 的字符串进行此类操作。也就是说如果有中文最好不要用这种方式操作字符串。
<?php $str='hello the beautiful world'; echo $str[6]."\n"; echo $str{6}."\n"; var_dump($str{30}); var_dump($str{-2}); echo ">>>".$str."<<<\n"; $str{30}='a'; echo $str."\n"; $str{-40}='b'; echo $str."\n"; $str{-4}='b'; echo $str."\n"; $str{-3}=''; echo $str."\n"; ?>
文章来源: PHP字符串中字符的存取和修改
人吐槽 | 人点赞 |
发表评论