Me pregunto, ¿cuál es la forma correcta de insertar variables PHP en una cadena?
De esta manera:
echo "Welcome ".$name."!"
O de esta manera:
echo "Welcome $name!"
Ambos métodos funcionan en mi PHP v5.3.5
. Este último es más corto y simple, pero no estoy seguro de si el primero es mejor formateado o si se acepta como más apropiado.
php
string
variables
concatenation
Diseñador web
fuente
fuente
echo 'Welcome '.$name.'!';
Respuestas:
Entre esas dos sintaxis, deberías elegir la que prefieras :-)
Personalmente, iría con su segunda solución en tal caso (interpolación variable) , que me resulta más fácil de escribir y leer.
El resultado será el mismo; e incluso si hay implicaciones de rendimiento, eso no importará 1 .
Como nota al margen, mi respuesta es un poco más completa: el día que querrás hacer algo como esto:
PHP interpretará su código como si estuviera tratando de usar la
$names
variable, que no existe. - tenga en cuenta que solo funcionará si usa "" not '' para su cadena.Ese día, necesitarás usar
{}
:No es necesario recurrir a las concatenaciones.
También tenga en cuenta que su primera sintaxis:
Probablemente podría optimizarse , evitando concatenaciones, utilizando:
(Pero, como dije antes, esto no importa mucho ...)
1 - A menos que esté haciendo cientos de miles de concatenaciones vs interpolaciones, y probablemente no sea el caso.
fuente
{}
.echo
, no en ningún otro lugar.time php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = $string.$i; } print("Done!\n");'
(Concatenación) en realidad pierde alrededor de 300 milisegundos (para 200,000 artículos, eso es 1 milisegundo por cada mil elementos en su conjunto ...). Eso es ruido estadístico, es imposible incluso medir alguna diferencia. Teniendo en cuenta que es más legible,time php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = "{$string}{$i}"; } print("Done!\n");'
(Interpolación) es el ganador indiscutible ...Las cadenas entre comillas dobles son más elegantes porque no tiene que dividir su cadena cada vez que necesita insertar una variable (como debe hacer con cadenas entre comillas simples).
Sin embargo, si necesita insertar el valor de retorno de una función, esto no se puede insertar en una cadena entre comillas dobles, ¡incluso si la rodea con llaves!
fuente
$x = function() { ...}; $string = "hello {$x(blah blah blah)}"
, que funciona alrededor de la "restricción".$x = 'trim'; $string = "hello {$x('blah blah blah')}";
$s = 'Hello ' . trim($world) .'!';
Intente usar comillas simples cuando no haya nada que interpolar en una cadena. Mejorará el rendimiento y puede usarse como una convención para identificar a ambosDesde php4 puedes usar un formateador de cadena:
Fuente: sprintf ()
fuente
Cualquiera está bien. Use el que tenga mejor visibilidad para usted. Y hablando de visibilidad, también puede consultar printf .
fuente
Desde el punto de vista de hacer pensar de manera simple , legible , consistente y fácil de entender (ya que el rendimiento no importa aquí):
El uso de variables incrustadas entre comillas dobles puede conducir a situaciones complejas y confusas en las que desea incrustar propiedades de objetos, matrices multidimensionales, etc. Es decir, generalmente al leer variables incrustadas, no puede estar instantáneamente 100% seguro del comportamiento final de lo que está leyendo .
Con frecuencia necesita agregar muletas como
{}
y\
, lo que IMO agrega confusión y hace que la legibilidad de la concatenación sea casi equivalente, si no mejor.Tan pronto como necesite ajustar una llamada de función alrededor de la var, por ejemplo
htmlspecialchars($var)
, debe cambiar a la concatenación.AFAIK, no puedes incorporar constantes.
En algunos casos específicos, las "comillas dobles con incrustación de vars" pueden ser útiles, pero en términos generales, optaría por la concatenación (usando comillas simples o dobles cuando sea conveniente)
fuente
Sé que esta pregunta ya tiene una respuesta elegida, pero encontré este artículo que evidentemente muestra que la interpolación de cadenas funciona más rápido que la concatenación. Puede ser útil para aquellos que aún tienen dudas.
fuente
¡Ve con el primero y usa comillas simples!
Las únicas situaciones en las que debe utilizar comillas dobles, es cuando se necesita
\r
,\n
,\t
! La sobrecarga simplemente no vale la pena usarla en ningún otro caso.También debe consultar la concatenación de variables PHP , phpbench.com para obtener algunos puntos de referencia sobre diferentes métodos de hacer las cosas.
fuente
\r
,\n
y\t
como otras respuestas no incluyeron este bit.Solo es cuestión de gustos.
Usa lo que quieras.
La mayoría de las veces estoy usando el segundo pero depende.
Permítame sugerirle que también obtenga un buen editor que resalte una variable dentro de una cadena
fuente
No concatenar. No es necesario, las comas como echo pueden tomar múltiples parámetros
Con respecto al uso de comillas simples o dobles, la diferencia es insignificante, puede hacer pruebas con un gran número de cadenas para probarlo usted mismo.
fuente
Deberías elegir el primero. No tienen ninguna diferencia, excepto el rendimiento, el primero será el rápido en comparación con el segundo.
Si la variable dentro de la comilla doble PHP toma tiempo para analizar la variable.
Echa un vistazo a estas comillas simples o comillas dobles para concatenación variable?
Este es otro ejemplo. ¿Hay un beneficio de rendimiento entre comillas simples y comillas dobles en php?
No entendí por qué esta respuesta en el enlace anterior se votó y por qué esta respuesta se votó negativamente.
Como dije lo mismo.
Puedes mirar aquí también
¿Qué es más rápido en PHP, comillas simples o dobles?
fuente
Si desea ejecutar un
SQL
comando y sus variables son miembros de la matriz, entonces no debe usar comillas simples dentro[]
de la matriz (así:)['']
; por ejemplo, si usa esta cadena como un comando SQL, obtendráserver error 500
:La cadena correcta es:
fuente
Sé que esta es una vieja pregunta, pero creo que alguien tiene que mencionar todos los pros y contras:
Mejor sintaxis : esa es la preferencia personal.
Rendimiento : no hay diferencia. Como muchos mencionaron, la comilla doble podría ser más rápida si se usan muchas variables poco realistas.
Mejor uso : comilla simple (principalmente). Como dijo @Khez, la comilla simple puede concatenar cualquier cosa, incluso las llamadas de función y variable modificación, así:
echo 'hi ' . trim($name) . ($i + 1);
. Lo único comillas dobles puede hacer que comilla simple no puede hacer es el uso de\n
,\r
,\t
y similares.Legibilidad : no hay diferencia (puede aplicarse preferencia personal).
Posibilidad de escritura / reescritura / depuración : en las declaraciones de 1 línea no hay diferencia, pero cuando se trata de varias líneas, es más fácil comentar / descomentar líneas mientras se depura o escribe. Por ejemplo:
Menos escape : comilla simple. Para comillas simples, necesita escapar solo de 2 caracteres (
'
y\
). Para una comilla doble, debe escapar 2 caracteres ("
,\
) y 3 más si es necesario ($
,{
y}
).Menos cambios : comilla simple. Por ejemplo, si tiene el siguiente código:
Y necesita incrementar 1 a $ i, para que se convierta en Me gusta:
Pero para una cita doble, deberá cambiar esto:
a esto:
Conclusión : usa lo que prefieras .
fuente