Un terme un peu bizarre que vous entendrez utiliser autour de PHP : « concaténer ». Je me souviens encore de la première fois où j’ai entendu ce mot, n’ayant pas la moindre idée de ce qu’il signifiait. Il s’avère que c’était une tâche commune et utile en PHP : joindre deux chaînes de caractères afin d’obtenir une seule chaîne de caractères ou quelque chose que nous pouvons répercuter à l’écran.
Aujourd’hui, nous allons couvrir tous les domaines majeurs de la concaténation de chaînes de caractères en PHP : comment la faire, pourquoi vous la ferez, ce qu’est l’opérateur de concaténation de PHP, et un peu des inconvénients de trop faire de la concaténation de chaînes de caractères en PHP.
Comprendre la concaténation de chaînes de caractères en PHP : Joindre deux chaînes
Nous utilisons la « concaténation de chaînes » pour assembler des séquences de caractères en PHP
Nous construisons donc beaucoup de HTML en PHP. Et même lorsque nous ne faisons pas cela, nous sommes souvent en train de traiter du texte. Pour ces raisons, nous voulons souvent réunir deux puits différents, string
s. (J’entends par là le type de données spécifique, une chaîne de caractères, par opposition à integer
ou autres.)
Nous utilisons donc la « concaténation de chaînes de caractères » pour assembler des choses en PHP. Nous pouvons l’utiliser pour mettre un nombre dans une chaîne de caractères, ou même plus communément nous mettons la chaîne de caractères ensemble avec une autre ou autre chaîne de caractères.
L’opérateur de concaténation de PHP : .
L’opérateur de concaténation des chaînes de caractères en PHP est un point.
.
.
Si vous avez programmé dans un autre langage, vous avez peut-être fait l’expérience d’utiliser le symbole +
(plus) pour mettre deux (ou plusieurs) chaînes de caractères ensemble. C’est ainsi que fonctionne la concaténation de chaînes en JavaScript, par exemple. En PHP, nous utilisons plutôt le caractère .
(point, ou virgule) pour accomplir la concaténation de chaînes. Ainsi, lorsque vous mettez le caractère point, .
, mieux deux chaînes différentes entre guillemets, ou une variable et une chaîne, ou une variable et une variable, le résultat sera une seule chaîne que PHP sera prêt à sortir (avec echo
par exemple) ou à effectuer un traitement supplémentaire.
D’après ce à quoi vous êtes habitué en anglais, l’opérateur de concaténation de PHP étant un .
peut sembler bizarre. Mais je vous promets qu’une fois que vous saurez ce qui se passe, vous vous y habituerez et le lirez de manière assez transparente.
Comment concaténer des chaînes de caractères en PHP
Allez, il est temps de passer au concret. Voici un peu de code qui montre à quoi ressemble un concat PHP dans la réalité pratique. Voici trois façons différentes dont nous pouvons echo
la chaîne « Hello World » en PHP:
echo "Hello World"; // outputs "Hello World"$hello = 'Hello';echo $hello.' World'; // outputs "Hello World"$world = 'World';$hello_world = $hello.' '.$world;echo $hello_world; // outputs "Hello World"
Le code ci-dessus est stupide : les deux seconds exemples sont inutilement compliqués. Mais nous les gardons simples afin de nous familiariser avec les concepts impliqués.
La toute première ligne de notre échantillon de code n’est qu’un exemple d’une utilisation très pédestre de echo
en PHP pour afficher une chaîne de caractères. Vous le ferez lorsque vous voudrez faire apparaître du texte de « PHP land » dans le code HTML de vos pages. Nous savons que la séquence "Hello World"
est une « chaîne » parce qu’elle est délimitée par des guillemets doubles (ou simples).
Notre bloc suivant définit d’abord une chaîne, simplement le mot Hello
et lui ajoute ensuite la chaîne World
avant de les répercuter sur la sortie. En PHP, l’ajout de chaînes de caractères à des chaînes de caractères est très courant. Nous le faisons pour nous permettre de définir une partie de la séquence plus loin de l’endroit où nous choisissons de l’afficher. (Souvent beaucoup plus loin qu’elle ne l’est dans cet exemple.)
Enfin, notre dernier bloc crée deux nouvelles variables : le mot World
puis la phrase Hello World
en tant que chaîne unique. Cette dernière nous donne donc un exemple de PHP qui va joindre des chaînes de caractères avec séparateur. Dans notre cas, le séparateur est juste un espace. Une erreur que je fais souvent dans le code PHP est d’oublier l’espace, mais c’est une erreur facile à réparer. Il suffit d’ajouter une chaîne supplémentaire d’un espace (ou un espace à une autre chaîne, si vous préférez).
Combiner vos pouvoirs PHP : Append Strings AND Variables
Dans le code ci-dessus, nous avons vu des exemples clairs de concaténation de chaînes de caractères PHP. Mais nous pouvons utiliser PHP pour combiner d’autres types de variables avec des chaînes de caractères, dans certaines limites. Ces limites : nous ne pouvons pas faire de concaténation avec des types de données complexes comme les objets ou les tableaux dans les chaînes de caractères sans travail supplémentaire.
Mais les types de données PHP plus « simples » comme les entiers et les flottants (génériquement, les nombres) sont une chose super commune à voir concaténée en PHP. Cela ressemblera à quelque chose comme :
$percentage = 12.1 + 9 + 41.21;echo 'Your final score: '.$percentage.' out of 100%.'; // outputs "Your final score: 62.31 out of 100%."$integer = 1 + 17;echo $integer.' centimeters in length'; // outputs "18 centimeters in length"
Dans les deux exemples, nous mettons le nombre (un float
dans le premier cas, un integer
dans le second) directement dans la chaîne de caractères via la concaténation. Comme PHP se charge de jongler avec les types pour transformer ce nombre en chaîne, nous pouvons le faire rapidement et facilement. En PHP, l’ajout aux chaînes de caractères avec la concaténation est facile pour les types de base avec des versions de chaînes de caractères évidentes.
Interpolation de chaînes de caractères en PHP ? Utiliser des guillemets simples ou doubles ?
Donc, une chose que j’utilise rarement, mais qu’il est très bon de comprendre, c’est l’interpolation de chaînes de caractères PHP. Ce que je veux dire (comme la plupart des gens qui pourraient le dire) par « interpolation de chaîne », c’est que vous intégrez réellement un $variable
dans une chaîne en PHP, et il est remplacé immédiatement par la valeur sous-jacente du $variable
. Cela ressemblerait donc à quelque chose comme:
$number = 4;echo "She has $number cars in her garage."; // outputs "She has 4 cars in her garage."echo "She has {$number} cars in her garage."; // outputs "She has 4 cars in her garage."
Quelques choses d’important à propos de ce qui précède. Premièrement : les deux instructions echo
conduiront à la sortie de « Elle a 4 voitures dans son garage ». Deuxièmement, nous savons donc que les enveloppes {}
ne montrent pas. Troisièmement, il est crucial que les deux déclarations et chaînes de caractères ci-dessus utilisent des guillemets doubles : "
et non des guillemets simples '
. En PHP, vous devez faire correspondre le caractère de guillemet ouvrant et fermant pour vos chaînes de caractères.
De plus, vous pouvez, lorsque vous utilisez des guillemets doubles, permettre au moteur PHP d’y interpoler la variable. Nous pourrions donc accomplir la même chose avec des guillemets simples seulement si nous faisions :
$number = 4;echo 'She has '.$number.' cars in her garage.'; // outputs "She has 4 cars in her garage."
Ici, nous utilisons à nouveau l’opérateur de concaténation de PHP, .
, plutôt que de compter sur l’interpolation des chaînes de caractères de PHP. Il y a du bon et du mauvais dans ces deux options. Et les trois fonctionnent bien. Le surcoût de performance lié à l’utilisation de l’interpolation de chaîne sur les chaînes doublement citées est suffisamment faible pour que vous ne deviez pas vous en inquiéter. Mais vous entendrez des gens pointer du doigt le fait (vrai) que le troisième exemple de cette section est (très marginalement) plus rapide.
Un impair : .= est une affectation de concaténation composée en PHP
Enfin, vous verrez cela utilisé parfois, et c’est très pertinent pour le sujet. Vous pouvez utiliser la combinaison d’un .
et d’un =
à la fois comme une affectation et une concaténation. Pour mieux comprendre cela, revoyons ces exemples de tout à l’heure :
$hello = 'Hello';$world = 'World';$hello_world = $hello.' '.$world;echo $hello_world; // outputs "Hello World"
Je n’ai rien changé au code ci-dessus. Mais vous pourriez écrire PHP pour joindre deux chaînes de caractères d’une manière tout à fait différente. Cela ressemble à ceci :
$output = 'Hello';$output .= ' ';$output .= 'World';echo $output; // outputs "Hello World"
Ce que cela fait, c’est concaténer à la fin de notre chaîne $output
l’espace (), puis ensuite le mot
World
. Donc le résultat est que nous obtenons exactement la même sortie. Donc effectivement, chaque fois que vous voyez .=
, c’est la même chose que $output = $output.$new_thing;
ou similaire. Que vous aimiez ou non cet exemple est une question de goût personnel. Mais en lisant le code d’autres personnes, je suis sûr que vous verrez des gens utiliser cela de temps en temps, donc il est bon de comprendre cet aspect de la concaténation en PHP.
Maintenant allez concaténer vos chaînes, de manière réfléchie
Avant de fermer carrément, un petit avertissement : apprendre le pouvoir de « concaténer » des chaînes avec PHP est important et très précieux. Mais c’est aussi souvent un signe que vous faites des choses moins efficaces que vous le devriez. Les modèles (fichiers qui contiennent juste votre HTML + des variables déjà organisées) sont souvent une meilleure solution pour la plupart des choses que vous faites que de simplement claquer ensemble beaucoup de chaînes de séquences HTML et de variables à l’intérieur de disons, un fichier WordPress functions.php
.
Cela dit, la concaténation en PHP est une chose amusante et importante à maîtriser. Bien que je pense qu’elle doit être utilisée avec parcimonie, je dirai aussi que dans la dizaine d’années où j’ai écrit du PHP, il n’y a probablement jamais eu une seule semaine où je n’ai pas utilisé les pouvoirs de la concaténation de chaînes PHP. Bonne chance!