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.