用数组符号表示PHP花括号
我刚刚遇到一个非常奇怪的PHP代码:
$oink{'pig'} = 1;
var_dump($oink);
$oink{'pig'} = '123123';
echo $oink{'pig'}; /* => 123123 */
echo $oink['pig']; /* => 123123 */
它像一个数组一样工作,但在手册中没有提及。 这是什么?
这是本手册中提到的。 {}
只是[]
§的替代语法:
方括号和花括号可以互换用于访问数组元素(例如$array[42]
和$array{42}
都会在上面的例子中做同样的事情)。
字符串§也是一样:
在字符串中的字符可以通过在使用方形数组括号的字符串之后指定所需字符的从零开始的偏移来访问和修改,如$str[42]
。 出于此目的,可以将字符串视为一组字符。 [...]
注意: 为了相同的目的 ,字符串也可以使用大括号来访问,如$str{42}
。
根据对该文档的评论,这只是另一种符号,可能设计为类似于Perl语法:http://www.php.net/manual/de/language.types.array.php#99015
更新:当这个答案最初发布时,PHP手册没有关于这个表示法的任何官方信息。 然而,到2014年,上面提到的评论已经被删除,并且正如Pacerier的回答所说,手册中已经正式提到了这个符号。
在手册中提到它,但它很模糊:
http://www.php.net/manual/en/language.types.string.php#language.types.string.substr
简而言之,花括号只能访问单个字符(尝试添加完整的字符串,您会看到它只返回第一个字符)。 它也被弃用,所以我会避免它的使用。
链接地址: http://www.djcxy.com/p/1869.html