这个PHP语法是什么意思?

6

Consider the code:

$a = "foobar";
echo $a{3}; // prints b

我知道$a[3]'b',但为什么使用{}代替[]会产生相同的结果?


FYI,数组也可以使用 {} 而不是 [] 进行访问。曾经,建议使用 [] 访问数组和 {} 访问字符串。现在,推荐使用 [] - Artefacto
4个回答

10

关于大括号的使用,可以在官方文档中了解:

也可以使用大括号来访问字符串,例如 $str{42},用于同样的目的。然而,此语法自PHP 5.3.0版本起已被弃用。请改用方括号,例如 $str[42]。


6

编辑 这个主题可能对你有兴趣:“去掉花括号”

这只是一种替代语法;这两种形式编译成完全相同的字节码:

<?php
$str = "aaab";
echo $str{3}; 
echo $str[3]; 

Number of ops: 9 Compiled vars: !0 = $str Line # * Op Fetch Ext Return Operands -------------------------------------------------- ------------------------------ 2 0 > EXT_STMT 1 ASSIGN! 0,'aaab' 3 2 EXT_STMT 3 FETCH_DIM_R $ 1! 0,3 4 ECHO $ 1 4 5 EXT_STMT 6 FETCH_DIM_R $ 2! 0,3 7 ECHO $ 2 8 > RETURN 1

1
哇,你能否给出一个显示这个表格的程序名称? - silent

5

虽然意思相同,但是PHP 5.3版本已经不再使用{}语法。


0

{} 和 [] 是一样的。你可以自己选择使用哪个。不过,[] 更常用。


{}已经被弃用,不应再使用。 - Fahad Sadah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接