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?


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

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.


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.


-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']
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.