Mélanger une variable PHP avec une chaîne littérale

140

Disons que j'ai une variable $testet qu'elle est définie comme:$test = 'cheese'

Je veux sortir cheesey, ce que je peux faire comme ceci:

echo $test . 'y'

Mais je préférerais simplifier le code à quelque chose de plus comme ça (qui ne fonctionnerait pas):

echo "$testy"

Existe-t-il un moyen de faire en sorte que le ysoit traité comme s'il était séparé de la variable?

Matt McDonald
la source
1
par $test = cheese;vous vouliez dire $test = 'cheese'; à la fin de votre message (si je ne me trompe pas) ...
Outcast

Réponses:

242
echo "{$test}y";

Vous pouvez utiliser des accolades pour supprimer l'ambiguïté lors de l'interpolation de variables directement dans des chaînes.

De plus, cela ne fonctionne pas avec des guillemets simples. Alors:

echo '{$test}y';

sortira

{$test}y
Alex
la source
1
est-il également possible de faire des appels de fonction en ligne avec une telle méthode? Quelque chose de similaire à"foo{implode(',', [abc])}bar"
velop
@velop Non. La construction de chaînes est souvent effectuée après le traitement. L'appel de fonctions au milieu de la préparation de votre sortie n'est souvent pas ce que vous voulez. Envisagez d'abord d'appeler la fonction, de stocker le résultat dans une variable, puis de l'inclure dans la chaîne echo "like so: $var";.
Jochem Kuijpers
comment incorporer un opérateur ternaire qui évalue à deux chaînes de diff dans une chaîne?
oldboy
50

Vous pouvez utiliser {}autour de votre variable, pour la séparer de ce qui suit:

echo "{$test}y"

À titre de référence, vous pouvez consulter la section Analyse des variables - Syntaxe complexe (bouclée) du manuel PHP.

Pascal MARTIN
la source
Merci. J'ai essayé de lire le manuel des cordes mais je ne savais pas exactement ce que je cherchais pour le rechercher pour ce que je cherchais.
Matt McDonald
2
Vous êtes le bienvenu :-) Ouais, pas toujours facile de trouver la bonne section, quand on ne sait pas vraiment ce que l'on cherche ^^
Pascal MARTIN
Il convient de noter qu'une fois que vous êtes dans le {}, vous pouvez utiliser des expressions, pas seulement des noms de variables, tels que {$ x-> y [3]} ou autre.
TextGeek
3

Exemple:

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

Il produira:

ringard

C'est exactement ce que vous recherchez.

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

print $bucket;

donne:

$node->mindd_2_study_status['und'][0]['value'] = $form_state['values']
['mindd_2_study_status']
Earlyburg
la source