Mescolare una variabile PHP con una stringa letterale


140

Dì che ho una variabile $tested è definita come:$test = 'cheese'

Voglio produrre cheesey, cosa che posso fare in questo modo:

echo $test . 'y'

Preferirei semplificare il codice a qualcosa di più simile a questo (che non funzionerebbe):

echo "$testy"

C'è un modo per yessere trattati come se fossero separati dalla variabile?


1
da $test = cheese;volevi dire $test = 'cheese'; alla fine tuo post (se non sbaglio) ...
Outcast

Risposte:


242
echo "{$test}y";

È possibile utilizzare le parentesi graffe per rimuovere l'ambiguità quando si interpolano le variabili direttamente nelle stringhe.

Inoltre, questo non funziona con virgolette singole. Così:

echo '{$test}y';

uscirà

{$test}y

1
è anche possibile incorporare le chiamate di funzione con un tale metodo? Qualcosa di simile a"foo{implode(',', [abc])}bar"
velop,

@velop Nope. La creazione di stringhe viene spesso eseguita dopo l'elaborazione. Chiamare funzioni durante la preparazione dell'output spesso non è quello che si desidera. Prendi in considerazione la possibilità di chiamare prima la funzione, archiviando il risultato in una variabile e quindi puoi includerlo nella stringa echo "like so: $var";.
Jochem Kuijpers,

come incorporare un operatore ternario che valuta due stringhe diff in una stringa?
oldboy,

50

Puoi usare {}intorno alla tua variabile, per separarla da ciò che segue:

echo "{$test}y"

Come riferimento, puoi dare un'occhiata alla sezione Analisi sintetica - Sintassi complessa (riccia) del manuale PHP.


Grazie. Ho provato a leggere il manuale delle stringhe ma non ero sicuro di cosa stavo cercando per cercarlo per quello che stavo cercando.
Matt McDonald,

2
Prego :-) Sì, non sempre è facile trovare la sezione giusta, quando non sai davvero cosa stai cercando ^^
Pascal MARTIN

Vale la pena notare che una volta dentro {}, puoi usare espressioni, non solo nomi di variabili, come {$ x-> y [3]} o altro.
TextGeek,

3

Esempio:

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

Produrrà:

formaggio

È esattamente quello che stai cercando.


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

print $bucket;

rendimenti:

$node->mindd_2_study_status['und'][0]['value'] = $form_state['values']
['mindd_2_study_status']
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.