2010-07-08 136 views
6

考虑代码:这个PHP语法是什么意思?

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

我知道$a[3]'b'但使用{}代替[] produec相同的结果怎么来的?

+0

FYI,阵列也可以与'{}'代替'[]'访问。曾几何时,'']'被推荐用于数组,''}'用于字符串。现在,'[]'是推荐的方法。 – Artefacto 2010-07-08 12:55:00

回答

0

{}和[]是一样的。这是你选择使用什么。但是[]更常见。

+0

{}已弃用,不应使用 – 2010-07-11 14:28:52

5

这是一样的,但{}语法从PHP 5.3起不推荐使用。

10

您可以阅读here in official documentation约括号:

一个String也可以使用 括号访问,比如$ {STR 42},出于同样的目的 。但是,从PHP 5.3.0开始,此语法不推荐使用 。改为使用方括号 括号,如$ str [42]。

6

编辑这个线程可能会感兴趣:"dropping curly braces"

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

<?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 2010-07-08 12:15:40

+2

@silent它是vld。看到http://derickrethans.nl/projects.html – Artefacto 2010-07-08 12:22:00

+0

太棒了,谢谢! – silent 2010-07-08 13:03:31