2010-07-08 2 views
6

Рассмотрим код:Что означает синтаксис этого PHP?

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

Я знаю $a[3] это 'b', но как же с помощью {} вместо [] produec тот же результат?

+0

FYI, массивы также могут быть доступны с помощью '' {} вместо '[]'. Когда-то время '[]' было рекомендовано для массивов и '{}' для строки. Теперь '[]' является рекомендуемым способом. – Artefacto

ответ

0

{} и [] - то же самое. это ваш выбор, что использовать. [] чаще встречается.

+0

{} устарел и не должен использоваться –

5

Это то же самое, но синтаксис {} устарел с PHP 5.3.

10

Вы можете прочитать here in official documentation о скобах:

Строка s также можно получить доступ с помощью брекетов, как и в $ ул {42}, для тех же целей . Однако этот синтаксис устарел с PHP 5.3.0. Вместо этого используйте квадратные скобки , например $ str [42].

6

EDIT Эта нить может вас заинтересовать: "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

+2

@silent Это vld. См. Http://derickrethans.nl/projects.html – Artefacto

+0

отлично, спасибо! – silent

Смежные вопросы