Mezclando una variable PHP con un literal de cadena


140

Digamos que tengo una variable $testy se define como:$test = 'cheese'

Quiero generar cheesey, lo que puedo hacer así:

echo $test . 'y'

Pero preferiría simplificar el código a algo más como esto (que no funcionaría):

echo "$testy"

¿Hay alguna manera de que yse trate como si estuviera separado de la variable?


1
por $test = cheese;que quería decir $test = 'cheese'; al final de su post (si no estoy equivocado) ...
— Outcast

Respuestas:


242
echo "{$test}y";

Puede usar llaves para eliminar la ambigüedad al interpolar variables directamente en cadenas.

Además, esto no funciona con comillas simples. Entonces:

echo '{$test}y';

saldrá

{$test}y

1
¿También es posible alinear llamadas de función con tal método? Algo similar a"foo{implode(',', [abc])}bar"
— velop

@velop Nope. La creación de cadenas a menudo se realiza después de que se haya producido el procesamiento. Llamar a las funciones en medio de la preparación de su salida a menudo no es lo que desea. Considere llamar primero a la función, almacenar el resultado en una variable y luego puede incluirlo en la cadena echo "like so: $var";.
— Jochem Kuijpers

¿Cómo incrustar un operador ternario que evalúa dos cadenas de diferencia en una cadena?
— oldboy

50

Puede usar {}alrededor de su variable, para separarla de lo que está después:

echo "{$test}y"

Como referencia, puede consultar la sección Análisis sintáctico variable - Sintaxis compleja (rizada) del manual de PHP.


Gracias. Traté de leer el manual de cadenas pero no estaba seguro exactamente de lo que estaba buscando para buscar lo que buscaba.
— Matt McDonald

2
De nada :-) Sí, no siempre es fácil encontrar la sección correcta, cuando realmente no sabes lo que estás buscando ^^
— Pascal MARTIN

Vale la pena señalar que una vez que esté dentro de {}, puede usar expresiones, no solo nombres de variables, como {$ x-> y [3]} o lo que sea.
— TextGeek

3

Ejemplo:

$test = "chees";
"${test}y";

Producirá:

caseoso

Es exactamente lo que estás buscando.


-3
$bucket = '$node->' . $fieldname . "['und'][0]['value'] = " . '$form_state' . "['values']['" . $fieldname . "']";

print $bucket;

rendimientos:

$node->mindd_2_study_status['und'][0]['value'] = $form_state['values']
['mindd_2_study_status']
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.