232 votos

Consiguiendo el primer carácter de una cadena con $str [0]

Quiero llegar a la primera letra de una cadena y me he dado cuenta de que $str[0] de las grandes obras. Simplemente no estoy seguro de si esto es una 'buena práctica', ya que la notación se utiliza generalmente con matrices. Esta característica no parece estar muy bien documentado, así que estoy recurriendo a ustedes para que me diga si es del todo correcto en todos los aspectos - el uso de esta notación?

O debo sólo se adhieren a los good ol' substr($str, 0, 1)?

También, he notado que entre llaves ($str{0}) funciona igual de bien. Qué pasa con eso?

338voto

Hock Puntos 2040

Sí. Cuerdas pueden verse como matrices de Char, y la manera de acceder a una posición de un array es utilizar la [] operador, así que no hay problema en absoluto en el uso de $str[0] (y estoy seguro de que es mucho más rápido que el método substr).

41voto

Michael Morton Puntos 2786

La sintaxis {} es obsoleto desde PHP 6. Se recomiendan los corchetes.

21voto

gattsbr Puntos 190

Aunque ambos de estos trabajará para obtener el primer carácter de una cadena substr($str, 0, 1) y $str[0] el uso de substr es el mejor método. Te voy a dar un ejemplo rápido de por qué digo esto.

Digamos que usted sólo desea que el primer caracter de una parte de $_POST, vamos a llamarlo 'tipo'. Y que $_POST['tipo'] actualmente es el 'Control'. Si en este caso si utilizas $_POST['type'][0]o substr($_POST['type'], 0, 1)obtendrá C de nuevo.

Sin embargo, si el lado del cliente fueron para modificar los datos que te envían, de type a type[] por ejemplo, y, a continuación, envía 'Control' y 'Prueba' como los datos de esta matriz, $_POST['type'][0] , se volverá Control en lugar de C , mientras que substr($_POST['type'], 0, 1) simplemente acaba de fallar.

Así que sí, puede haber un problema con el uso de $str[0], pero eso depende de los alrededores de la circunstancia.

12voto

middaparka Puntos 33832

Mi única duda sería cómo aplica esta técnica sería en secuencias de múltiples bytes, pero si eso no es una consideración, entonces sospecho que estás cubierto. (En caso de duda, substr parece una elección obviamente segura).

Sin embargo, desde una perspectiva de panorama, me tengo que preguntar con qué frecuencia necesita acceder a la ' n'th carácter en una cadena para que esto sea una consideración clave.

6voto

Stephen Puntos 1439

Hablando como un simple mortal, yo me quedaría con $str[0] . En cuanto a mí respecta, es más rápido captar el significado de $str[0] un vistazo que substr($str, 0, 1) . Esto probablemente se reduce a una cuestión de preferencia.

En cuanto al rendimiento, pues el perfil perfil perfil. :) O usted podría asomarse a código PHP...

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X