在PHP中,您可以以几种不同的方式访问字符串的字符,其中之一是使用substr()函数。 您还可以使用花括号或方括号访问字符串中的第N个字符,像这样:$string = 'hello'; echo $string{0}; // h echo $string[0]; // h 我的问题是,它们之间有什么区别?{}和[]有什么不同之处吗? 谢谢。
使用$string[0],另一种方法(花括号)已在PHP 8.0中删除。 对于字符串: 在PHP 7.4中,使用{}语法访问字符串文字中的字符已被弃用。这在PHP 8.0中已被删除。 对于数组: 在PHP 8.0.0之前,方括号和大括号可互换地用于访问数组元素(例如,在上面的示例中$ array [42]和$ array {42}均可执行相同的操作)。花括号语法已自PHP 7.4.0起过时,并在PHP 8.0.0中不再支持。
没有区别。 Owen的回答已经过时,PHP手册的最新版本不再指出其已被弃用 §: 可以通过在字符串后使用方括号指定所需字符的从零开始的偏移量来访问和修改字符串中的字符,如$str[42]所示。 就此目的而言,请将字符串视为字符数组。[...] 注意:字符串也可以使用大括号访问,如$str{42},目的相同。 然而,似乎更多的人/项目使用[],而且很多人甚至不知道{}是可行的。如果您需要向公众或不熟悉花括号语法的人分享代码,使用[] 可能是有益的。 更新: 使用{}访问字符串字符已被弃用,改用[]。
是的,没有区别。这种语言怪癖有一些历史... 最初,花括号语法旨在取代即将被弃用的方括号语法: http://web.archive.org/web/20010614144731/http://www.php.net/manual/en/language.types.string.php#language.types.string.substr. 后来,这个政策被颠倒了,更喜欢使用方括号语法: http://web.archive.org/web/20060702080821/http://php.net/manual/en/language.types.string.php#language.types.string.substr 甚至后来,花括号的写法也将被弃用: http://web.archive.org/web/20080612153808/http://www.php.net/manual/en/language.types.string.php#language.types.string.substr 截至目前,似乎已经撤销了弃用,并将它们视为两种备选语法: http://web.archive.org/web/20160607224929/http://php.net/manual/en/language.types.string.php#language.types.string.substr
{}
进行数组访问。它一直都是这样的。(只是说一下) - hakre$string{0}
在7.4中已被弃用 - https://wiki.php.net/rfc/deprecate_curly_braces_array_access - aland