Je me demande, quelle est la bonne façon d'insérer des variables PHP dans une chaîne?
Par ici:
echo "Welcome ".$name."!"
Ou de cette façon:
echo "Welcome $name!"
Ces deux méthodes fonctionnent dans mon PHP v5.3.5
. Ce dernier est plus court et plus simple, mais je ne sais pas si le premier est meilleur formatage ou accepté comme plus approprié.
php
string
variables
concatenation
Web_Designer
la source
la source
echo 'Welcome '.$name.'!';
Réponses:
Entre ces deux syntaxes, vous devriez vraiment choisir celle que vous préférez :-)
Personnellement, j'irais avec votre deuxième solution dans un tel cas (interpolation variable) , que je trouve plus facile à écrire et à lire.
Le résultat sera le même; et même s'il y a des implications en termes de performances, celles-ci n'auront pas d'importance 1 .
En tant que sidenote, ma réponse est donc un peu plus complète: le jour où vous voudrez faire quelque chose comme ceci:
PHP interprétera votre code comme si vous essayiez d'utiliser la
$names
variable - qui n'existe pas. - notez que cela ne fonctionnera que si vous utilisez "" pas '' pour votre chaîne.Ce jour-là, vous devrez utiliser
{}
:Pas besoin de se replier sur les enchaînements.
Notez également que votre première syntaxe:
Pourrait probablement être optimisé , en évitant les concaténations, en utilisant:
(Mais, comme je l'ai dit plus tôt, cela n'a pas beaucoup d'importance ...)
1 - À moins que vous ne fassiez des centaines de milliers de concaténations vs interpolations - et ce n'est probablement pas tout à fait le cas.
la source
{}
.echo
, pas ailleurs.time php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = $string.$i; } print("Done!\n");'
(la concaténation) perd en fait environ 300 millisecondes (pour 200 000 éléments, soit 1 milliseconf pour mille éléments sur votre ensemble ...). C'est du bruit statistique, il est impossible de mesurer une différence. Vu qu'il est plus lisible,time php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = "{$string}{$i}"; } print("Done!\n");'
(Interpolation) est le vainqueur incontesté ...Les chaînes entre guillemets doubles sont plus élégantes car vous n'avez pas besoin de casser votre chaîne à chaque fois que vous devez insérer une variable (comme vous devez le faire avec les chaînes entre guillemets simples).
Cependant, si vous devez insérer la valeur de retour d'une fonction, cela ne peut pas être inséré dans une chaîne entre guillemets doubles - même si vous l'entourez d'accolades!
la source
$x = function() { ...}; $string = "hello {$x(blah blah blah)}"
, qui contourne la "restriction".$x = 'trim'; $string = "hello {$x('blah blah blah')}";
$s = 'Hello ' . trim($world) .'!';
Essayez d'utiliser des guillemets simples lorsqu'il n'y a rien à interpoler dans la chaîne. Cela améliorera les performances et peut être utilisé comme une convention pour identifier les deuxDepuis php4, vous pouvez utiliser un formateur de chaînes:
Source: sprintf ()
la source
Soit on va bien. Utilisez celui qui a une meilleure visibilité pour vous. Et en parlant de visibilité, vous pouvez également consulter printf .
la source
Du point de vue de rendre la pensée simple , lisible , cohérente et facile à comprendre (car les performances n'ont pas d'importance ici):
L'utilisation de variables intégrées dans des guillemets doubles peut conduire à des situations complexes et déroutantes lorsque vous souhaitez incorporer des propriétés d'objet, des tableaux multidimentionnels, etc. En général, lorsque vous lisez des variables intégrées, vous ne pouvez pas être instantanément sûr à 100% du comportement final de ce que vous lisez. .
Vous avez souvent besoin d'ajouter des béquilles telles que
{}
et\
, ce qui ajoute de la confusion à l'OMI et rend la lisibilité de la concaténation presque équivalente, sinon meilleure.Dès que vous devez encapsuler un appel de fonction autour du var, par exemple
htmlspecialchars($var)
, vous devez basculer en concaténation.AFAIK, vous ne pouvez pas incorporer de constantes.
Dans certains cas spécifiques, les "guillemets doubles avec intégration de variables" peuvent être utiles, mais de manière générale, j'opterais pour la concaténation (en utilisant des guillemets simples ou doubles lorsque cela est pratique)
la source
Je sais que cette question a déjà une réponse choisie, mais j'ai trouvé cet article qui montre évidemment que l'interpolation de chaînes fonctionne plus rapidement que la concaténation. Cela pourrait être utile pour ceux qui ont encore des doutes.
la source
Allez avec le premier et utilisez des guillemets simples!
Les seules situations où vous devez utiliser des guillemets doubles, est quand vous avez besoin
\r
,\n
,\t
! Les frais généraux ne valent tout simplement pas la peine d'être utilisés dans les autres cas.Vous devriez également vérifier la concaténation des variables PHP , phpbench.com pour quelques repères sur différentes méthodes de faire les choses.
la source
\r
,\n
et\t
comme d'autres réponses ne comprenaient pas ce bit.Ce n'est qu'une question de goût.
Utilisez ce que vous voulez.
La plupart du temps, j'utilise le second, mais cela dépend.
Permettez-moi de vous suggérer également de vous procurer un bon éditeur qui mettra en évidence une variable à l'intérieur d'une chaîne
la source
Ne pas concaténer. Ce n'est pas nécessaire, nous les virgules car l'écho peut prendre plusieurs paramètres
En ce qui concerne l'utilisation de guillemets simples ou doubles, la différence est négligeable, vous pouvez faire des tests avec un grand nombre de chaînes pour tester par vous-même.
la source
Vous devez choisir le premier. Ils n'ont pas de différence sauf la performance la première sera la plus rapide dans la comparaison de la seconde.
Si la variable à l'intérieur du guillemet double PHP prend du temps pour analyser la variable.
Consultez ces guillemets simples ou doubles pour la concaténation de variables?
Ceci est un autre exemple Y a-t-il un avantage de performance entre guillemets simples et guillemets doubles en php?
Je n'ai pas compris pourquoi cette réponse dans le lien ci-dessus est votée positivement et pourquoi cette réponse a été rejetée.
Comme je l'ai dit la même chose.
Vous pouvez aussi regarder ici
Quoi de plus rapide en PHP, guillemets simples ou doubles?
la source
Si vous souhaitez exécuter une
SQL
commande et que vos variables sont des membres du tableau, vous ne devez pas utiliser de guillemets simples à l'intérieur[]
du tableau (comme ceci:)['']
; par exemple, si vous utilisez cette chaîne comme une commande SQL, vous obtenezserver error 500
:La chaîne correcte est:
la source
Je sais que c'est une vieille question, mais je pense que quelqu'un doit mentionner tous les avantages et les inconvénients:
Meilleure syntaxe : c'est une préférence personnelle.
Performance : Aucune différence. Comme beaucoup l'ont mentionné, les guillemets doubles peuvent être plus rapides si vous utilisez de nombreuses variables irréalistes.
Meilleure utilisation : devis unique (principalement). Comme @Khez dit, en citant simple , vous pouvez concaténer quoi que ce soit, même des appels de fonction et de modification variables, comme suit:
echo 'hi ' . trim($name) . ($i + 1);
. La seule chose guillemet peut le faire une seule citation ne peut pas faire est l' utilisation de\n
,\r
,\t
et aussi bien.Lisibilité : aucune différence (des préférences personnelles peuvent s'appliquer).
Écriture / Réécriture / Débogage : Dans les instructions à une ligne, il n'y a pas de différence, mais lorsqu'il s'agit de plusieurs lignes, il est plus facile de commenter / décommenter des lignes pendant le débogage ou l'écriture. Par exemple:
Moins d'échappatoire : guillemet simple. Pour les guillemets simples, vous devez échapper à 2 caractères uniquement (
'
et\
). Pour les guillemets doubles, vous devez échapper 2 caractères ("
,\
) et 3 autres si nécessaire ($
,{
et}
).Moins de changements : devis unique. Par exemple, si vous disposez du code suivant:
Et vous devez incrémenter 1 à $ i, donc ça devient des likes:
Mais pour une citation double, vous devrez changer ceci:
pour ça:
Conclusion : utilisez ce que vous préférez .
la source