2010-07-08 173 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