2010-07-08 6 views
6

Consultez le code:Que signifie cette syntaxe PHP?

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

Je sais $a[3] est 'b' mais comment se fait à l'aide {} en place de [] produec le même résultat?

+0

Pour votre information, les tableaux peuvent également être visualisés à '{}' au lieu de '[]'. Il était une fois, '[]' était recommandé pour les tableaux et '{}' pour les chaînes. Maintenant, '[]' est la méthode recommandée. – Artefacto

Répondre

0

{} et [] sont les mêmes. c'est votre choix quoi utiliser. [] est plus commun cependant.

+0

{} est obsolète et ne doit pas être utilisé –

5

C'est la même chose, mais la syntaxe {} est obsolète depuis PHP 5.3.

10

Vous pouvez lire here in official documentation sur les accolades:

String s peuvent être accédées en utilisant accolades, comme dans $ str {42}, pour le même but . Cependant, cette syntaxe est désapprouvée à partir de PHP 5.3.0. Utilisez plutôt des parenthèses carrées , comme $ str [42].

6

EDIT Ce fil peut vous intéresser: "dropping curly braces"

Il est juste une autre syntaxe; les deux formes compilent exactement la même bytecode:

<?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. Pouvez-vous s'il vous plaît donner un nom de programme qui montre cette table? – silent

+2

@silent C'est vld. Voir http://derickrethans.nl/projects.html – Artefacto

+0

super, merci! – silent