2 个回答

在php内部,字符串是字节组成的数组,用花括号加上数字下标可以访问或者修改字符串中对应的单个字符。注意是单个字符!

在你的代码中的$str{1}只能容纳一个字符,而你的赋值是5个字符,此时php会默认只取第一个字符,那么它的结果自然就是lnmp。

另外php官方文档中也说了用花括号访问或修改字符串对多字节字符集很不安全,当你使用utf-8或者gbk等其它编码集的时候尽量不要用{}。

String 字符串

一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode 。详见字符串类型详解。

引用自PHP手册。粗体说明了。每个字符是一个字节。所以,只能替换一个字节的位置了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题