2010-07-08 50 views
6

Considere el código:¿Qué significa esta sintaxis de PHP?

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

$a[3] es 'b' pero ¿cómo es que el uso de {} en lugar de [] produec el mismo resultado?

+0

FYI, las matrices también se puede acceder con '{}' en lugar de '[] '. Érase una vez, se recomendaba '[]' para arrays y '{}' para string. Ahora, '[]' es el camino recomendado para seguir. – Artefacto

Respuesta

0

{} y [] son ​​lo mismo. es tu elección qué usar. [] es más común sin embargo.

+0

{} está en desuso, y no debe usarse –

5

Es lo mismo, pero la sintaxis {} está en desuso a partir de PHP 5.3.

10

Usted puede leer acerca de los apoyos here in official documentation:

cadena s también se puede acceder usando llaves, como en $ str {42}, para la misma finalidad . Sin embargo, esta sintaxis es obsoleta a partir de PHP 5.3.0. Use corchetes cuadrados en su lugar, como $ str [42].

6

EDITAR Este hilo puede interesar: "dropping curly braces"

Es sólo una sintaxis alternativa; las dos formas compilan a exactamente el mismo código de bytes:

<?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. ¿Puedes dar un nombre del programa que muestra esta tabla? – silent

+2

@silent Es vld. Ver http://derickrethans.nl/projects.html – Artefacto

+0

genial, ¡gracias! – silent