Come combinare due stringhe insieme in PHP?


140

In realtà non so come descrivere ciò che volevo, ma ti mostrerò:

Per esempio:

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

Cosa devo fare (o elaborare) in modo che $ result sia la combinazione di $data1e $data2?

Risultato desiderato:

$result = "the color is red";

13
Questo si chiama "concatenazione di stringhe" e non dovrebbe essere più estraneo che +per i numeri. Si prega di iniziare con un libro / tutorial e familiarizzare con gli operatori di base nella lingua.

1
Ci sono molti modi per farlo. se vedi la risposta puoi verificarla. ma usa quello più semplice. ad esempio $ result = "$ data1 $ data2"; questo è tutto. o $ risultato = $ dati1. $ dati2;
Jewelhuq,

1
@Machavity puoi aumentare magicamente il livello di protezione in modo che i post ridondanti non si accumulino in questa pagina?
mickmackusa,

Risposte:


206
$result = $data1 . $data2;

Questo si chiama concatenazione di stringhe. Il tuo esempio manca di spazio, quindi per quello in particolare, avresti bisogno di:

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

85

Esistono diversi modi per concatenare due stringhe insieme.

Utilizzare l'operatore di concatenazione .(e .=)

In PHP .è l'operatore di concatenazione che restituisce la concatenazione dei suoi argomenti destro e sinistro

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

Se si desidera aggiungere una stringa a un'altra stringa, utilizzare l' .=operatore:

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

Sintassi complessa (riccia) / stringhe di virgolette doppie

In PHP le variabili contenute in stringhe tra virgolette doppie vengono interpolate (ovvero i loro valori vengono "scambiati" per la variabile). Ciò significa che puoi posizionare le variabili al posto delle stringhe e semplicemente inserire uno spazio tra di esse. Le parentesi graffe chiariscono dove si trovano le variabili.

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

Nota: questo funzionerà anche senza le parentesi graffe nel tuo caso:

$result = "$data1 $data2";

Puoi anche concatenare i valori dell'array all'interno di una stringa:

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

Usa sprintf()oprintf()

sprintf()ci consente di formattare le stringhe utilizzando potenti opzioni di formattazione. È eccessivo per una concatenazione così semplice ma è utile quando si dispone di una stringa complessa e / o si desidera eseguire anche una formattazione dei dati.

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

printf() fa la stessa cosa ma visualizzerà immediatamente l'output.

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

heredoc

Heredocs può anche essere usato per combinare variabili in una stringa.

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

Usa un ,conecho()

Funziona solo quando si fa eco al contenuto e non si assegna a una variabile. Ma puoi usare una virgola per separare un elenco di espressioni per PHP per echeggiare e usare una stringa con uno spazio vuoto come una di quelle espressioni:

echo $data1, ' ', $data2;

21

Nessuno lo ha menzionato, ma esiste un'altra possibilità. Lo sto usando per enormi query sql. Puoi usare. = Operatore :)

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

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

"Lo sto usando per enormi query sql." - nota che è un modo tipico di ottenere en.wikipedia.org/wiki/SQL_injection
riducendo l'attività il

come concatenare esattamente la stringa in questo o in altro modo mi darà l'iniezione sql nella mia query con parametri?
codice

Costruire manualmente intere query SQL (almeno suggerite da "per enormi query sql") non è OK. Preparando solo parametri, non intere query dovrebbero essere al sicuro da questo specifico rischio di sicurezza.
riduzione dell'attività

19

Concatenali con l' .operatore:

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

Oppure usa l'interpolazione di stringhe:

$result = "$data1 $data2";

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

è più generico.


1
questo è molto utile nel caso in cui si desideri creare un elenco delimitato in quanto verifica se i var hanno valori che $email_to = implode(', ', array($addr1, $addr2, addr3));non sono necessari if($addr != '')ecc.
Aba,

4
Non scegliere le funzioni di array, a meno che non sia necessario. Perché l'array funziona sempre più lentamente degli operatori. Inoltre; usano più ram.
MERT DOĞAN,

9

Un altro modulo disponibile è questo:

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

6

Puoi provare la seguente riga di codice

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

Preferirei usare virgolette singole anziché doppie. link
Jack

5

Un punto viene utilizzato per concatenare le stringhe. Semplice esempio per trasformare due variabili stringa in una singola variabile:

$full = $part1 . $part2;

Nel tuo esempio, vorresti fare:

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

Noterai che ho aggiunto una stringa di uno spazio tra le due variabili. Questo perché l'originale $data1non è terminato con uno spazio. Se li avessi combinati senza di essa, la tua $resultvariabile sarebbe simile the color isred.


5

Puoi farlo usando PHP:

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

Questo combinerà due stringhe e il putput sarà: "il colore è rosso!".


1
I valori di input fabbricati non rappresentano la stringa di input dell'OP e stai facendo eco a soluzioni che sono state dichiarate ANNI prima. Questa non è una domanda javascript quindi la consulenza è irrilevante. Questo post non aggiunge alcun valore alla pagina.
Mickmackusa,

@mickmackusa, ok ho aggiornato il testo, hai ragione ma ho dato una risposta a js qui perché questa è una domanda molto semplice in modo che l'utente possa imparare la differenza
sunil

1
L'aggiornamento NON utilizza il testo del PO. Non fornire soluzioni javascript a domande php. Questa risposta è mal formattata e non aggiunge alcun valore alla pagina.
Mickmackusa,

4
$s = "my name is ";

$s .= "keyur";

echo $s; 

risultato:

my name is keyur

9
Benvenuto in StackOverflow. È bello se rispondi alle domande. Tuttavia, se lo fai, ti preghiamo di formattarlo correttamente. Inoltre, la tua risposta è già stata fornita. In che modo aggiunge valore aggiuntivo a questo post di quattro anni ?
T3 H40,

6
Questa è solo una ripetizione delle risposte esistenti.
Pang

4
$result = $data1 . $data2;

prova questo


5
Questa non è una risposta corretta. risulta "il colore è rosso". Inoltre, la tua risposta è duplicata dalla risposta di qualcuno pubblicata anni fa. Down ha votato.
Jason Liu,


0

Non sono esattamente chiaro quali siano i tuoi requisiti, ma fondamentalmente potresti definire separatamente le due variabili e successivamente combinarle insieme.

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

$result=$data1.$data2;

In questo modo puoi persino dichiarare $ data2 come livello globale in modo da poterne modificare il valore durante l'esecuzione, ad esempio potrebbe ottenere la risposta "rossa" da una casella di controllo.


0

combinare due stringhe insieme in PHP?

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

2
Questa risposta non offre nulla che le altre risposte non abbiano già fornito e non offre spiegazioni sul perché o sul modo in cui funziona.
John Conde,

-1

1.Concatenare la stringa (spazio tra ciascuna stringa)

Snippet di codice:

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

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

Uscita: SachinTendulkar

2.Concatenare la stringa in cui esiste spazio

Snippet di codice:

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

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

Uscita: Sachin Tendulkar

  1. Concatena la stringa usando la funzione printf.

Snippet di codice:

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

Uscita:
SachinTendulkar
Sachin Tendulkar


4
Cosa offre questa risposta che non è già stata fornita dalle altre risposte?
John Conde,

@rashedcs Funziona benissimo per me !! 🏏
IPSDSILVA,

-1

Credo che il modo più performante sia:

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

Se vuoi implementare la localizzazione, puoi fare qualcosa del genere:

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

È un po 'più lento, ma non assume regole grammaticali.


-3

Prova questo, possiamo aggiungere una stringa in php con il punto (.) Simbolo

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

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

1
Questa risposta non offre nulla che le altre risposte non abbiano già fornito.
John Conde,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.