2010-07-08 33 views
6

Si consideri il codice:Che cosa significa questa sintassi PHP?

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

So $a[3] è 'b' ma come mai utilizzando {} al posto del [] produec lo stesso risultato?

+0

proposito, gli array sono accessibili anche con '{}' invece di '[]'. C'era una volta, '[]' era raccomandato per gli array e '{}' per la stringa. Ora, '[]' è la soluzione consigliata. – Artefacto

risposta

0

{} e [] sono gli stessi. è la tua scelta su cosa usare. [] è più comune però.

+0

{} è deprecato e non dovrebbe essere utilizzato –

5

È lo stesso, ma la sintassi {} è obsoleta a partire da PHP 5.3.

10

Si può leggere su here in official documentation parentesi:

String s può accedere anche utilizzando parentesi, come in $ str {42}, per lo stesso scopo . Tuttavia, questa sintassi è obsoleta a partire da PHP 5.3.0. Utilizza invece le parentesi quadre , ad esempio $ str [42].

6

EDIT Questo thread può interessare: "dropping curly braces"

E 'solo una sintassi alternativa; le due forme compilare esattamente lo stesso 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. puoi per favore dare un nome al programma che mostra questo tavolo? – silent

+2

@silent È vld. Vedi http://derickrethans.nl/projects.html – Artefacto

+0

fantastico, grazie! – silent

Problemi correlati