Comment combiner deux chaînes ensemble en PHP?


140

Je ne sais pas vraiment comment décrire ce que je voulais mais je vais vous montrer:

Par exemple:

$data1 = "the color is";
$data2 = "red";

Que dois-je faire (ou traiter) pour que $ result soit la combinaison de $data1et $data2?

Résultat désiré:

$result = "the color is red";

13
Ceci est appelé "concaténation de chaînes" et ne devrait pas être plus étranger que +pour les nombres. Veuillez commencer par un livre / tutoriel et familiarisez-vous avec les opérateurs de base de la langue.

1
Il existe de nombreuses façons de le faire. si vous voyez la réponse, vous pouvez la vérifier. mais utilisez le plus simple. par exemple $ result = "$ data1 $ data2"; c'est tout. ou $ result = $ data1. $ data2;
jewelhuq

1
@Machavity pouvez-vous par magie augmenter le niveau de protection afin que les messages redondants ne continuent pas à s'accumuler sur cette page?
mickmackusa

Réponses:


206
$result = $data1 . $data2;

C'est ce qu'on appelle la concaténation de chaînes. Votre exemple manque cependant d'espace, donc pour cela spécifiquement, vous auriez besoin de:

$result = $data1 . ' ' . $data2;

85

Il existe plusieurs façons de concaténer deux chaînes ensemble.

Utilisez l'opérateur de concaténation .(et.= )

En PHP .est l'opérateur de concaténation qui retourne la concaténation de ses arguments droit et gauche

$data1 = "the color is";
$data2 = "red";
$result = $data1 . ' ' . $data2;

Si vous souhaitez ajouter une chaîne à une autre chaîne, vous utiliserez l' .=opérateur:

$data1 = "the color is ";
$data1 .= "red"

Syntaxe complexe (bouclée) / chaînes de guillemets doubles

En PHP, les variables contenues dans des chaînes entre guillemets sont interpolées (c'est-à-dire que leurs valeurs sont "échangées" pour la variable). Cela signifie que vous pouvez placer les variables à la place des chaînes et simplement mettre un espace entre elles. Les accolades indiquent clairement où se trouvent les variables.

$result = "{$data1} {$data2}";

Remarque: cela fonctionnera également sans les accolades dans votre cas:

$result = "$data1 $data2";

Vous pouvez également concaténer des valeurs de tableau dans une chaîne:

$arr1 = ['val' => 'This is a'];
$arr2 = ['val' => 'test'];
$variable = "{$arr1['val']} {$arr2['val']}";

Utilisez sprintf()ouprintf()

sprintf()nous permet de formater des chaînes en utilisant de puissantes options de formatage. C'est excessif pour une concaténation aussi simple, mais c'est pratique lorsque vous avez une chaîne complexe et / ou que vous souhaitez également formater les données.

$result = sprintf("%s %s", $data1, $data2);

printf() fait la même chose mais affichera immédiatement la sortie.

printf("%s %s", $data1, $data2);
// same as
$result = sprintf("%s %s", $data1, $data2);
echo $result;

Heredoc

Heredocs peut également être utilisé pour combiner des variables dans une chaîne.

$result= <<<EOT
$data1 $data2
EOT;

Utilisez un ,avececho()

Cela ne fonctionne que lors de l'écho du contenu et non de l'assignation à une variable. Mais vous pouvez utiliser une virgule pour séparer une liste d'expressions pour que PHP fasse écho et utiliser une chaîne avec un espace vide comme l'une de ces expressions:

echo $data1, ' ', $data2;

21

Personne n'a mentionné cela mais il y a une autre possibilité. Je l'utilise pour d'énormes requêtes SQL. Vous pouvez utiliser. = Opérateur :)

$string = "the color is ";
$string .= "red";

echo $string; // gives: the color is red

"Je l'utilise pour d'énormes requêtes SQL." - notez que c'est un moyen typique d'obtenir en.wikipedia.org/wiki/SQL_injection
réduire l'activité du

Comment la chaîne de concaténation exacte de cette manière ou d'une autre me donnera-t-elle une injection SQL dans ma requête paramétrée?
code

Construire manuellement des requêtes SQL entières (au moins suggéré par "pour les requêtes SQL volumineuses") n'est pas OK. Préparer uniquement des paramètres et non des requêtes entières doit être à l'abri de ce risque de sécurité spécifique.
activité réduite le

19

Concaténez-les avec l' .opérateur:

$result = $data1 . " " . $data2;

Ou utilisez l'interpolation de chaîne:

$result = "$data1 $data2";

11
$result = implode(' ', array($data1, $data2));

est plus générique.


1
ce qui est très utile dans le cas où vous souhaitez effectuer une liste délimitée comme il vérifie si les vars ont des valeurs $email_to = implode(', ', array($addr1, $addr2, addr3));pas besoin pour if($addr != '')etc
Aba

4
Ne choisissez pas les fonctions de tableau, sauf si vous devez le faire. Parce que le tableau fonctionne toujours plus lentement que les opérateurs. Aditionellement; ils utilisent plus de bélier.
MERT DOĞAN

9

Un autre formulaire disponible est le suivant:

<?php
$data1 = "the color is";
$data2 = "red";
$result = "{$data1} {$data2}";

6

Vous pouvez essayer la ligne de code suivante

$result = $data1." ".$data2;

Je préférerais utiliser des guillemets simples au lieu de guillemets doubles. lien
Jack

5

Un point est utilisé pour concaténer des chaînes. Exemple simple pour transformer deux variables chaîne en une seule variable:

$full = $part1 . $part2;

Dans votre exemple, vous voudriez faire:

$result = $data1 . ' ' . $data2;

Vous remarquerez que j'ai ajouté une chaîne d'un espace entre les deux variables. C'est parce que votre original $data1ne s'est pas terminé par un espace. Si vous les aviez combinés sans elle, votre $resultvariable finirait par ressembler à the color isred.


5

Vous pouvez le faire en utilisant PHP:

$txt1 = "the color is";
$txt2 = " red!";
echo $txt1.$txt2;

Cela combinera deux chaînes et le putput sera: "la couleur est rouge!".


1
Vos valeurs d'entrée fabriquées ne représentent pas la chaîne d'entrée de l'OP et vous faites écho aux solutions qui ont été énoncées des années plus tôt. Ce n'est pas une question javascript, donc les conseils ne sont pas pertinents. Cet article n'ajoute aucune valeur à la page.
mickmackusa

@mickmackusa, ok j'ai mis à jour le texte, vous avez raison mais j'ai donné une réponse à js ici car c'est une question très basique pour que l'utilisateur puisse apprendre la différence
sunil

1
Votre mise à jour n'utilise PAS le texte du PO. Ne fournissez pas de solutions javascript aux questions php. Cette réponse est mal formatée et n'ajoute aucune valeur à la page.
mickmackusa

4
$s = "my name is ";

$s .= "keyur";

echo $s; 

résultat:

my name is keyur

9
Bienvenue dans StackOverflow. C'est bien, si vous répondez aux questions. Cependant, si vous le faites, veuillez le formater correctement. De plus, votre réponse a déjà été donnée. En quoi cela ajoute-t-il une valeur supplémentaire à ce poste vieux de quatre ans ?
T3 H40

6
Ceci est juste une répétition des réponses existantes.
Pang

4
$result = $data1 . $data2;

essaye ça


5
Ce n'est pas la bonne réponse. il en résulte "la couleur est rouge". De plus, votre réponse est dupliquée de la réponse de quelqu'un publiée il y a des années. Bas voté.
Jason Liu


0

Je ne sais pas exactement quelles sont vos exigences, mais fondamentalement, vous pouvez définir séparément les deux variables et les combiner par la suite.

$data1="The colour is ";
$data2="red";

$result=$data1.$data2;

En faisant cela, vous pouvez même déclarer $ data2 comme un niveau global afin que vous puissiez changer sa valeur pendant l'exécution, par exemple, il pourrait obtenir la réponse "rouge" à partir d'une case à cocher.


0

combiner deux chaînes ensemble en PHP?

$result = $data1 . ' ' . $data2;

2
Cette réponse n'offre rien que les autres réponses n'aient déjà fourni et n'offre aucune explication sur le pourquoi ou le comment cela fonctionne.
John Conde

-1

1. concaténer la chaîne (espace entre chaque chaîne)

Extrait de code :

<?php
 $txt1 = "Sachin";
 $txt2 = "Tendulkar";

 $result = $txt1.$txt2 ;
 echo  $result. "\n";
 ?>  

Sortie: SachinTendulkar

2. concaténer la chaîne où l'espace existe

Extrait de code :

<?php
 $txt1 = "Sachin";
 $txt2 = "Tendulkar";

 $result = $txt1." ".$txt2; 
 echo  $result. "\n";
?>  

Sortie: Sachin Tendulkar

  1. Concaténez la chaîne à l'aide de la fonction printf.

Extrait de code :

  <?php
 $data1 = "Sachin";
 $data2 = "Tendulkar";
 printf("%s%s\n",$data1, $data2);
 printf("%s %s\n",$data1, $data2); 
?>

Sortie:
SachinTendulkar
Sachin Tendulkar


4
Qu'offre cette réponse qui n'a pas déjà été fournie par les autres réponses?
John Conde

@rashedcs Fonctionne très bien pour moi !! 🏏
IPSDSILVA le

-1

Je pense que le moyen le plus performant est:

$data1 = "the color is";
$data2 = "red";
$result = $data1 . ' ' . $data2;

Si vous souhaitez implémenter la localisation, vous pouvez faire quelque chose comme ceci:

$translationText = "the color is %s";
$translationRed  = "red";
$result = sprintf($translationText, $translationRed);

C'est un peu plus lent, mais cela ne suppose pas de règles de grammaire.


-3

Essayez ceci, nous pouvons ajouter une chaîne en php avec le symbole point (.)

$data1 = "the color is";
$data2 = "red";

echo $data1.$data2; //the color isred
echo $data1." ".$data2; // the color is red (we have appended space)

1
Cette réponse n'offre rien que les autres réponses n'aient déjà fournies.
John Conde
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.