Jak połączyć ze sobą dwa ciągi znaków w PHP?


140

Właściwie nie wiem, jak opisać to, czego chciałem, ale pokażę ci:

Na przykład:

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

Co mam zrobić (lub przetworzyć), aby $ wynik był kombinacją $data1i $data2?

Pożądany rezultat:

$result = "the color is red";

13
Nazywa się to „konkatenacją ciągów” i nie powinno być bardziej obce niż w +przypadku liczb. Zacznij od książki / samouczka i zapoznaj się z podstawowymi operatorami w języku.

1
Można to zrobić na wiele sposobów. jeśli widzisz odpowiedź, możesz to sprawdzić. ale użyj najprostszego. na przykład $ wynik = "$ dane1 $ dane2"; Otóż ​​to. lub $ wynik = $ dane1. $ dane2;
jewelhuq

1
@Machavity, czy możesz w magiczny sposób podnieść poziom ochrony, aby nadmiarowe posty nie gromadziły się na tej stronie?
mickmackusa

Odpowiedzi:


206
$result = $data1 . $data2;

Nazywa się to konkatenacją ciągów. Twój przykład nie ma jednak spacji, więc specjalnie do tego potrzebujesz:

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

85

Istnieje kilka sposobów łączenia razem dwóch ciągów.

Użyj operatora konkatenacji .(i .=)

W PHP .jest operatorem konkatenacji, który zwraca konkatenację jego prawego i lewego argumentu

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

Jeśli chcesz dołączyć ciąg do innego łańcucha, użyjesz .=operatora:

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

Złożona (zawijana) składnia / podwójne cudzysłowy

W PHP zmienne zawarte w podwójnych cudzysłowach są interpolowane (tj. Ich wartości są „zamieniane” na zmienną). Oznacza to, że możesz umieścić zmienne w miejscu łańcuchów i po prostu wstawić spację między nimi. Nawiasy klamrowe wyjaśniają, gdzie znajdują się zmienne.

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

Uwaga: to zadziała również bez szelek w Twoim przypadku:

$result = "$data1 $data2";

Możesz również połączyć wartości tablicowe wewnątrz ciągu:

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

Użyj sprintf()lubprintf()

sprintf()pozwala nam formatować łańcuchy przy użyciu zaawansowanych opcji formatowania. Jest to przesada w przypadku tak prostej konkatenacji, ale jest przydatna, gdy masz złożony ciąg i / lub chcesz również sformatować dane.

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

printf() robi to samo, ale natychmiast wyświetli dane wyjściowe.

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

Heredoc

Heredoców można również używać do łączenia zmiennych w łańcuch.

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

Użyj ,zecho()

Działa to tylko wtedy, gdy wyświetla się treść i nie jest przypisywana do zmiennej. Ale możesz użyć przecinka, aby oddzielić listę wyrażeń, które PHP ma wywołać echo i użyć łańcucha z jedną spacją jako jednego z tych wyrażeń:

echo $data1, ' ', $data2;

21

Nikt o tym nie wspomniał, ale jest inna możliwość. Używam go do ogromnych zapytań sql. Możesz użyć. = Operator :)

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

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

„Używam go do dużych zapytań sql”. - zwróć uwagę, że jest to typowy sposób uzyskania en.wikipedia.org/wiki/SQL_injection
zmniejszenie aktywności

jak dokładnie konkatenacja łańcucha w ten lub inny sposób da mi iniekcję sql w moim sparametryzowanym zapytaniu?
nazwa kodowa

Ręczne tworzenie całych zapytań SQL (przynajmniej sugerowane przez „dla ogromnych zapytań sql”) nie jest OK. Przygotowywanie samych parametrów, a nie całych zapytań powinno być zabezpieczone przed tym konkretnym zagrożeniem bezpieczeństwa.
aktywność redukująca

19

Połącz je z .operatorem:

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

Lub użyj interpolacji ciągów:

$result = "$data1 $data2";

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

jest bardziej ogólny.


1
jest to bardzo przydatne w przypadku, gdy chcesz utworzyć listę rozdzielaną, ponieważ sprawdza, czy zmienne mają jakieś wartości, które $email_to = implode(', ', array($addr1, $addr2, addr3));nie są potrzebne if($addr != '')itp.
Aba

4
Nie wybieraj funkcji tablicowych, chyba że musisz. Ponieważ tablica zawsze działa wolniej niż operatory. Do tego; używają więcej pamięci RAM.
MERT DOĞAN

9

Inny dostępny formularz to:

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

6

Możesz wypróbować następujący wiersz kodu

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

Wolałbym używać pojedynczych cudzysłowów zamiast podwójnych cudzysłowów. link
Jack

5

Kropka służy do łączenia ciągów. Prosty przykład zamiany dwóch zmiennych łańcuchowych w jedną zmienną:

$full = $part1 . $part2;

W swoim przykładzie chciałbyś zrobić:

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

Zauważysz, że dodałem ciąg jednej spacji między dwiema zmiennymi. Dzieje się tak, ponieważ oryginał $data1nie kończył się spacją. Gdybyś je połączył bez tego, twoja $resultzmienna wyglądałaby tak the color isred.


5

Możesz to zrobić za pomocą PHP:

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

Spowoduje to połączenie dwóch ciągów, a putput będzie wyglądał następująco: „kolor jest czerwony!”.


1
Twoje sfabrykowane wartości wejściowe nie reprezentują ciągu wejściowego OP i powtarzasz rozwiązania, które zostały podane LATA wcześniej. To nie jest pytanie javascript, więc porady są nieistotne. Ten post nie dodaje żadnej wartości do strony.
mickmackusa,

@mickmackusa, ok Zaktualizowałem tekst, masz rację, ale dałem tutaj odpowiedź js, ponieważ jest to bardzo podstawowe pytanie, dzięki czemu użytkownik może poznać różnicę
sunil

1
Twoja aktualizacja NIE używa tekstu OP. Nie dostarczaj rozwiązań javascript na pytania php. Ta odpowiedź jest źle sformatowana i nie wnosi żadnej wartości do strony.
mickmackusa

4
$s = "my name is ";

$s .= "keyur";

echo $s; 

wynik:

my name is keyur

9
Witamy w StackOverflow. Miło, jeśli odpowiadasz na pytania. Jeśli jednak to zrobisz, sformatuj go poprawnie. Co więcej, twoja odpowiedź została już udzielona. Jak to dodaje dodatkowej wartości do tego czteroletniego postu?
T3 H40

6
To tylko powtórzenie istniejących odpowiedzi.
Pang

4
$result = $data1 . $data2;

Spróbuj tego


5
To nie jest poprawna odpowiedź. Wynika z tego „kolor jest czerwony”. Twoja odpowiedź jest również duplikatem z czyjejś odpowiedzi opublikowanej lata temu. Głosował w dół.
Jason Liu


0

Nie rozumiem dokładnie, jakie są Twoje wymagania, ale w zasadzie możesz osobno zdefiniować dwie zmienne, a następnie połączyć je ze sobą.

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

$result=$data1.$data2;

W ten sposób możesz nawet zadeklarować $ data2 jako poziom globalny, aby zmienić jego wartość podczas wykonywania, na przykład może uzyskać odpowiedź „czerwony” z pola wyboru.


0

połączyć ze sobą dwa ciągi znaków w PHP?

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

2
Ta odpowiedź nie zawiera niczego, czego inne odpowiedzi jeszcze nie udzieliły, i nie wyjaśnia, dlaczego i jak to działa.
John Conde

-1

1. skonczuj ciąg (odstęp między każdym ciągiem)

Fragment kodu:

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

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

Wyjście: SachinTendulkar

2. Podaj łańcuch, w którym istnieje spacja

Fragment kodu:

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

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

Wyjście: Sachin Tendulkar

  1. Połącz łańcuch za pomocą funkcji printf.

Fragment kodu:

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

Wyjście:
SachinTendulkar
Sachin Tendulkar


4
Co oferuje ta odpowiedź, czego nie dostarczyły inne odpowiedzi?
John Conde

@rashedcs Działa świetnie dla mnie !! 🏏
IPSDSILVA

-1

Uważam, że najbardziej wydajnym sposobem jest:

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

Jeśli chcesz zaimplementować lokalizację, możesz zrobić coś takiego:

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

Jest trochę wolniejszy, ale nie obejmuje reguł gramatycznych.


-3

Spróbuj tego, możemy dołączyć ciąg znaków w php z symbolem kropki (.)

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

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

1
Ta odpowiedź nie zawiera niczego, czego inne odpowiedzi jeszcze nie udzieliły.
John Conde
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.