PHP $string0 与 $string[0];

Posted

技术标签:

【中文标题】PHP $string0 与 $string[0];【英文标题】:PHP $string0 vs. $string[0];PHP $string0 与 $string[0]; 【发布时间】:2010-09-25 00:19:13 【问题描述】:

php 中,您可以通过几种不同的方式访问字符串中的字符,其中之一是 substr()。您还可以使用大括号或方括号访问字符串中的第 N 个字符,如下所示:

$string = 'hello';

echo $string0; // h
echo $string[0]; // h

我的问题是,两者之间是否有优势? 和 [] 有什么区别?

谢谢。

【问题讨论】:

【参考方案1】:

使用$string[0],另一种方法(大括号)在 PHP6 中被弃用(src)

注意:也可以使用大括号访问字符串,如 $str42,用于相同目的。但是,从 PHP 6 开始不推荐使用此语法。请改用方括号。

【讨论】:

是否也会删除使用 作为评估方法?例如 $$dynamic_object_name->doStuff() 不,我相信他们的目标是将字符串访问标准化为数组。 为了将来的参考,我想指出,关于卷曲语法被弃用的行已经从大约 3 年前的文档中删除,这意味着它不会很快被弃用,如果有的话. @Owen:PHP 还使用 进行数组访问。它总是这样。 (只是说) 被否决为 v.out of date。 PHP6 从未发生过。 Pacerier 的回答现在要准确得多。【参考方案2】:

There is no difference.Owen 的回答已经过时了,最新版本的 PHP 手册不再声明它已弃用 §:

字符串中的字符可以通过指定来访问和修改 使用字符串后所需字符的从零开始的偏移量 方数组括号,如$str[42]将字符串视为数组 为此目的的字符数。 [...]

注意:字符串也可以使用大括号访问,如$str42for 相同的目的

然而,似乎更多的人/项目使用[],而且很多人甚至不知道 是可能的。如果您需要公开或与不了解花括号语法的人共享您的代码,可能使用[] 会有所帮助。

更新:不推荐使用 访问字符串字符,请改用[]

【讨论】:

我更喜欢花括号,因为它在视觉上清楚地表明我正在从字符串变量访问字符,而不是从数组中访问值。在某种程度上,这是一回事,但在代码级别,它使视觉效果更好。【参考方案3】:

是的,没有区别。这种语言怪癖有一些历史......

最初,大括号语法旨在替换将被弃用的方括号语法:

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

【讨论】:

以上是关于PHP $string0 与 $string[0];的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序进度条 progress组件

NSString字符操作

如何生成这些子字符串? [关闭]

Java子线程中操作主线程Private级别数据

java对String进行json编码 实现类似与PHP中json_encode 方法的功能

php中常用的字符串长度函数strlen()与mb_strlen()实例解释