Un término un poco extraño que oirás a la gente usar alrededor de PHP: «concatenar». Todavía recuerdo la primera vez que escuché esa palabra, sin tener la menor idea de lo que significaba. Resulta que era una tarea común y útil en PHP: unir dos cadenas para que obtengamos una sola cadena o algo que podamos hacer eco en la pantalla.
Hoy cubriremos todas las áreas principales de la concatenación de cadenas en PHP: cómo hacerlo, por qué lo harás, qué es el operador de concatenación en PHP, y un poco de las desventajas de hacer concatenación de cadenas en PHP demasiado.
Entender la concatenación de cadenas en PHP: Unir dos cadenas
Usamos la «concatenación de cadenas» para juntar secuencias de caracteres en PHP
Así que construimos mucho HTML en PHP. E incluso cuando no estamos haciendo eso, a menudo estamos procesando texto. Por esas razones, a menudo queremos juntar dos pozos diferentes, string
s. (Con esto me refiero al tipo de datos específico, una cadena, a diferencia de integer
u otros.)
Así que usamos la «concatenación de cadenas» para juntar cosas en PHP. Podemos usarlo para poner un número en una cadena, o incluso más comúnmente ponemos la cadena junto con otra u otras cadenas.
El operador de concatenación de PHP: .
El operador de concatenación de cadenas de PHP es un punto.
.
.
Si has programado en otro lenguaje, puede que hayas experimentado el uso del símbolo +
(más) para unir dos (o más) cadenas. Así es como funciona la concatenación de cadenas en JavaScript, por ejemplo. En PHP, en cambio, usamos el carácter .
(punto, o punto decimal) para lograr la concatenación de cadenas. Así que cuando pones el punto, .
, carácter mejor dos cadenas entrecomilladas diferentes, o una variable y una cadena, o una variable y una variable, el resultado será una sola cadena que PHP estará listo para la salida (con echo
por ejemplo) o hacer más procesamiento de.
Desde lo que estás acostumbrado en inglés, que el operador de concatenación de PHP sea un .
puede parecer extraño. Pero te prometo que una vez que sepas lo que ocurre te acostumbrarás y lo leerás sin problemas.
Cómo concatenar cadenas en PHP
Muy bien, es hora de concretar. Aquí hay un poco de código que muestra cómo se ve una concatenación en PHP en la realidad práctica. Aquí hay tres formas diferentes en las que podemos echo
la cadena «Hola Mundo» en PHP:
echo "Hello World"; // outputs "Hello World"$hello = 'Hello';echo $hello.' World'; // outputs "Hello World"$world = 'World';$hello_world = $hello.' '.$world;echo $hello_world; // outputs "Hello World"
El código anterior es tonto: los dos segundos ejemplos son innecesariamente complicados. Pero los estamos manteniendo simples para que podamos familiarizarnos con los conceptos involucrados.
La primera línea de nuestro ejemplo de código es sólo un ejemplo de un uso muy pedestre de echo
en PHP para mostrar una cadena. Esto lo harás cuando quieras obtener un texto de la «tierra de PHP» para que aparezca en el HTML de tus páginas. Sabemos que la secuencia "Hello World"
es una «cadena» porque está delimitada por comillas dobles (o simples).
Nuestro siguiente bloque define primero una cadena, simplemente la palabra Hello
y luego le añade la cadena World
antes de que se haga eco de ellas a la salida. En PHP, añadir una cadena a otra es súper común. Lo hacemos para permitirnos definir parte de la secuencia más lejos de donde elegimos mostrarla. (A menudo mucho más lejos de lo que está en este ejemplo.)
Finalmente nuestro último bloque crea dos nuevas variables: la palabra World
y luego la frase Hello World
como una sola cadena. Este último nos da así un ejemplo de PHP que unirá cadenas con separador. En nuestro caso, el separador es sólo un espacio. Un error que cometo mucho en el código PHP es olvidar el espacio, pero es un error fácil de arreglar. Simplemente añade una cadena extra de un espacio (o un espacio a otra cadena, si lo prefieres).
Combinando tus poderes en PHP: Anexar Cadenas Y Variables
En el código anterior, hemos visto claros ejemplos de concatenación de cadenas en PHP. Pero podemos usar PHP para combinar otros tipos de variables con cadenas, dentro de unos límites. Esos límites: no podemos hacer concatenación con tipos de datos complejos como objetos o arrays en cadenas sin trabajo extra.
Pero los tipos de datos PHP «más sencillos» como enteros y floats (genéricamente, números) son algo súper común de ver concatenados en PHP. Eso se verá algo así:
$percentage = 12.1 + 9 + 41.21;echo 'Your final score: '.$percentage.' out of 100%.'; // outputs "Your final score: 62.31 out of 100%."$integer = 1 + 17;echo $integer.' centimeters in length'; // outputs "18 centimeters in length"
En ambos ejemplos, estamos poniendo el número (un float
en el primer caso, un integer
en el segundo) directamente en la cadena mediante concatenación. Debido a que PHP hará los «malabares de tipo» por nosotros para convertir ese número en una cadena, somos capaces de hacer esto rápidamente y con facilidad. En PHP, añadir a las cadenas con la concatenación es fácil para los tipos básicos con versiones de cadena obvias.
¿Interpolación de cadenas en PHP? Usar comillas simples o dobles?
Así que una cosa que raramente uso, pero que es muy bueno entender es la interpolación de cadenas en PHP. A lo que me refiero (al igual que la mayoría de la gente que lo dice) por «interpolación de cadenas» es cuando incrustas un $variable
en una cadena en PHP, y es reemplazado inmediatamente por el valor subyacente del $variable
. Así que se vería algo como:
$number = 4;echo "She has $number cars in her garage."; // outputs "She has 4 cars in her garage."echo "She has {$number} cars in her garage."; // outputs "She has 4 cars in her garage."
Algunas cosas importantes sobre lo anterior. Primero: ambas sentencias echo
llevarán a la salida «Tiene 4 coches en su garaje». Segundo: así sabemos que los {}
envolventes no se muestran. En tercer lugar, es fundamental que tanto las declaraciones como las cadenas anteriores utilicen comillas dobles: "
y no comillas simples '
. En PHP, debes hacer coincidir el carácter de apertura y cierre de las comillas para tus cadenas.
Además, puedes, al usar comillas dobles, permitir que el motor de PHP interpolara la variable en ella. Así que podríamos lograr lo mismo con comillas simples sólo si hiciéramos:
$number = 4;echo 'She has '.$number.' cars in her garage.'; // outputs "She has 4 cars in her garage."
Aquí estamos usando el operador de concatenación de PHP, .
de nuevo, en lugar de confiar en la interpolación de cadenas de PHP. Hay cosas buenas y malas en ambas opciones. Y las tres funcionan bien. La sobrecarga de rendimiento de usar la interpolación de cadenas en cadenas de doble comilla es lo suficientemente pequeña como para no preocuparse por ello. Pero oirás a la gente señalar el hecho (verdadero) de que el tercer ejemplo de esta sección es (muy marginalmente) más rápido.
Una rareza: .= es una asignación de concatenación compuesta en PHP
Por último, verás esto usado a veces, y es muy relevante para el tema. Puedes usar la combinación de un .
y un =
como una asignación y una concatenación. Para entenderlo mejor, volvamos a ver estos ejemplos de antes:
$hello = 'Hello';$world = 'World';$hello_world = $hello.' '.$world;echo $hello_world; // outputs "Hello World"
No he cambiado nada del código anterior. Pero se podría escribir PHP para unir dos cadenas de una forma bastante diferente. Esto se ve así:
$output = 'Hello';$output .= ' ';$output .= 'World';echo $output; // outputs "Hello World"
Así que lo que hace esto es concatenar al final de nuestra cadena $output
el espacio (), y luego la palabra
World
. Así que el resultado es que obtenemos la misma salida exacta. Así que efectivamente cada vez que veas .=
es lo mismo que $output = $output.$new_thing;
o similar. Que te guste o no este ejemplo es una cuestión de gusto personal. Pero a medida que leas el código de otras personas, estoy seguro de que verás que la gente utiliza esto de vez en cuando, por lo que es bueno entender este aspecto de la concatenación en PHP.
Ahora ve a concatenar tus cadenas, de forma pensada
Antes de cerrar del todo, una pequeña advertencia: aprender el poder de «concatenar» cadenas con PHP es importante y muy valioso. Pero también es a menudo una señal de que estás haciendo cosas menos eficientes de lo que deberías. Las plantillas (archivos que sólo contienen tu HTML + variables ya organizadas) son a menudo una mejor solución para la mayoría de las cosas que estás haciendo que simplemente juntar un montón de cadenas de secuencias HTML y variables dentro de, digamos, un archivo de WordPress functions.php
.
Dicho esto, la concatenación en PHP es una cosa divertida e importante para dominar. Aunque creo que debe usarse con moderación, también diré que en los más o menos diez años que llevo escribiendo en PHP probablemente no haya habido una sola semana en la que no haya usado los poderes de la concatenación de cadenas en PHP. Buena suerte!