2010-07-08 43 views
6

xem xét mã:Cú pháp PHP này có ý nghĩa gì?

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

Tôi biết $a[3]'b' nhưng làm thế nào mà sử dụng {} ở vị trí của [] produec kết quả tương tự?

+0

FYI, mảng cũng có thể được truy cập với '{}' thay vì '[]'. Ngày xửa ngày xưa, '[]' được đề xuất cho mảng và '{}' cho chuỗi. Bây giờ, '[]' là cách được khuyên dùng. – Artefacto

Trả lời

0

{} và [] giống nhau. nó là sự lựa chọn của bạn những gì để sử dụng. [] là phổ biến hơn mặc dù.

+0

{} không được dùng nữa và không được sử dụng –

5

Giống nhau, nhưng cú pháp {} không còn được dùng nữa kể từ PHP 5.3.

10

Bạn có thể đọc here in official documentation về niềng răng:

String s cũng có thể được truy cập bằng niềng răng, như trong $ str {42}, với cùng mục đích . Tuy nhiên, cú pháp này là không được chấp nhận như của PHP 5.3.0. Thay vào đó, hãy sử dụng dấu ngoặc vuông , chẳng hạn như $ str [42].

6

EDIT chủ đề này có thể bạn quan tâm: "dropping curly braces"

Nó chỉ là một cú pháp thay thế; hai hình thức biên dịch chính xác các bytecode cùng:

<?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

wow. bạn có thể vui lòng cho biết tên chương trình hiển thị bảng này không? – silent

+2

@silent Đó là vld. Xem http://derickrethans.nl/projects.html – Artefacto

+0

tuyệt vời, cảm ơn bạn! – silent

Các vấn đề liên quan