2008-12-02 34 views
26

En PHP puede acceder a caracteres de cadenas de diferentes formas, una de las cuales es substr(). También puede acceder al carácter número N de una cadena con llaves o cuadradas, así:

$string = 'hello'; 

echo $string{0}; // h 
echo $string[0]; // h 

Mi pregunta es, ¿hay un beneficio de uno sobre el otro? ¿Cuál es la diferencia entre {} y []?

Gracias.

Respuesta

36

uso $string[0], el otro método (tirantes) está siendo obsoleta en PHP6 (src)

Nota: Las cadenas también se puede acceder usando llaves, como en $ str {42}, para el mismo propósito. Sin embargo, esta sintaxis está en desuso a partir de PHP 6. Utilice los corchetes en su lugar.

+0

¿Se eliminará también el uso de {} como método de evaluación? E.g $ {$ dynamic_object_name} -> doStuff() – Jay

+0

no, creo que su objetivo es simplemente estandarizar el acceso a las cadenas como una matriz. – Owen

+13

Para referencia futura, me gustaría señalar que la línea sobre la sintaxis rizada está en desuso y desde entonces se ha eliminado de la documentación hace aproximadamente 3 años, lo que significa que no se va a desaprobar pronto, si es que alguna vez. – Webmut

18

There is no difference. respuesta de Owen no está actualizado, la última versión del Manual de PHP ya no se afirma que está en desuso §:

caracteres al interior de cadena pueden ser consultados y modificados al especificar la base cero desplazamiento de el carácter deseado después de la cadena usando escuadras cuadradas, como en $str[42]. Piense en una cadena como una matriz de caracteres para este propósito. [...]

Nota: Las cadenas también se puede acceder usando llaves, como en $str{42}, para el mismo propósito.

Sin embargo parece que más personas/proyectos utilizan [], y que muchas personas ni siquiera saben {} es posible. Si necesita compartir su código públicamente o con personas que no conocen la sintaxis de llaves, puede ser beneficioso para usar [].

2

Sí, no hay diferencia. Esta peculiaridad lenguaje tiene un poco de historia ...

Originalmente, la sintaxis de corchete se pretende sustituir la sintaxis de corchetes que iba a ser obsoleta:

http://web.archive.org/web/20010614144731/http://www.php.net/manual/en/language.types.string.php#language.types.string.substr.

tarde que la política se invirtió, y se prefiere la sintaxis de corchetes en su lugar:

http://web.archive.org/web/20060702080821/http://php.net/manual/en/language.types.string.php#language.types.string.substr

e incluso más tarde, las llaves se iba a estar en desuso:

http://web.archive.org/web/20080612153808/http://www.php.net/manual/en/language.types.string.php#language.types.string.substr

Al escribir estas líneas, parece que la obsolescencia se ha retirado también y solo se consideran dos sintaxis alternativas:

http://web.archive.org/web/20160607224929/http://php.net/manual/en/language.types.string.php#language.types.string.substr