Як поєднати дві струни разом у PHP?


140

Я насправді не знаю, як описати те, що хотів, але я вам покажу:

Наприклад:

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

Що мені робити (або обробляти), щоб $ результат був поєднанням $data1і $data2?

Бажаний результат:

$result = "the color is red";

13
Це називається "конкатенація рядків" і має бути не більш іноземною, ніж +для чисел. Почніть з книги / підручника та ознайомтесь з основними мовами операторів.

1
Існує маса способів зробити це. якщо ви бачите відповідь, можете це перевірити. але використовуйте найпростіший. наприклад $ result = "$ data1 $ data2"; Це воно. або $ результат = $ data1. $ data2;
Jewhuq

1
@Machavity Чи можете ви магічно підвищити рівень захисту, щоб зайві пости не продовжували накопичуватися на цій сторінці?
mickmackusa

Відповіді:


206
$result = $data1 . $data2;

Це називається конкатенацією рядків. У вашому прикладі не вистачає місця, тому для цього конкретно вам знадобиться:

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

85

Існує кілька способів поєднання двох рядків разом.

Використовувати оператор конкатенації ..=)

У PHP .- оператор конкатенації, який повертає конкатенацію правого та лівого аргументів

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

Якщо ви хочете додати рядок до іншого рядка, ви використовуєте .=оператор:

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

Складний (фігурний) синтаксис / подвійні цитати рядків

У PHP змінні, що містяться у подвійних цитованих рядках, є інтерпольованими (тобто їх значення "замінені" для змінної). Це означає, що ви можете розмістити змінні замість рядків і просто помістити пробіл між ними. Кучеряві дужки дозволяють зрозуміти, де знаходяться змінні.

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

Примітка: це також буде працювати без дужок у вашому випадку:

$result = "$data1 $data2";

Ви також можете об'єднати значення масиву всередині рядка:

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

Використовуйте sprintf()абоprintf()

sprintf()дозволяє нам форматувати рядки, використовуючи потужні параметри форматування. Це дуже просто для такої простої конкатенації, але це зручно, коли у вас є складна рядок та / або ви хочете виконати певне форматування даних.

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

printf() робить те ж саме, але негайно відобразить вихід.

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

Гередок

Heredocs також можна використовувати для об'єднання змінних у рядок.

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

Використовуйте ,сecho()

Це працює лише тоді, коли повторюється вміст, а не присвоюється змінній. Але ви можете скористатися комою, щоб розділити список виразів для PHP, щоб відлунюватись, і використовувати рядок з одним порожнім пробілом як один із цих виразів:

echo $data1, ' ', $data2;

21

Про це ніхто не згадував, але є й інша можливість. Я використовую його для величезних запитів sql. Ви можете використовувати. = Оператор :)

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

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

"Я використовую його для величезних запитів sql." - зауважте, що це типовий спосіб отримання en.wikipedia.org/wiki/SQL_injection
зменшення активності

як саме з'єднувальний рядок тим чи іншим способом дасть мені sql введення в мій параметризований запит?
codelame

Вручну створювати цілі запити SQL (принаймні, запропоновані "для величезних запитів sql") не в порядку. Готуючи лише параметри, не цілі запити повинні бути захищені від цього специфічного ризику безпеки.
зменшення активності

19

Об’єднайте їх з .оператором:

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

Або використовувати рядкову інтерполяцію:

$result = "$data1 $data2";

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

є більш загальним.


1
це дуже корисно у випадку, коли ви хочете скласти розмежений список, оскільки він перевіряє, чи є у vars якісь значення, $email_to = implode(', ', array($addr1, $addr2, addr3));для яких немає необхідності if($addr != '')тощо
Aba

4
Не вибирайте функції масиву, якщо не потрібно. Оскільки масив функціонує завжди повільніше, ніж оператори. Додатково; вони використовують більше барана.
MERT DOĞAN

9

Ще одна доступна форма:

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

6

Ви можете спробувати наступний рядок коду

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

Я вважаю за краще використовувати одинарні лапки замість подвійних. посилання
Джек

5

Для з'єднання рядків використовується період. Простий приклад для перетворення двох струнних змінних в одну змінну:

$full = $part1 . $part2;

У вашому прикладі ви хочете зробити:

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

Ви помітите, що я додав рядок з одного проміжку між двома змінними. Це тому, що ваш оригінал $data1не закінчився пробілом. Якби ви поєднали їх без цього, ваша $resultзмінна в кінцевому підсумку виглядатиме так the color isred.


5

Це можна зробити за допомогою PHP:

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

Це поєднає два рядки, і путту буде: "колір червоний!".


1
Ваші виготовлені вхідні значення не представляють собою вхідний рядок ОП, і ви повторюєте рішення, які були заявлені РОКІВ раніше. Це не питання JavaScript, тому порада не має значення. Ця публікація не додає значення сторінці.
mickmackusa

@mickmackusa, добре, я оновив текст, ви маєте рацію, але я дав відповідь js тут, тому що це дуже основне питання, щоб користувач міг дізнатися різницю
sunil

1
Оновлення НЕ використовує текст ОП. Не надайте рішення Javascript для запитань PHP. Ця відповідь погано відформатована і не додає значення для сторінки.
mickmackusa

4
$s = "my name is ";

$s .= "keyur";

echo $s; 

результат:

my name is keyur

9
Ласкаво просимо до StackOverflow. Приємно, якщо ви відповідаєте на питання. Однак, якщо це зробити, будь ласка, відформатуйте його досконало. Далі, ваша відповідь вже була дана. Як це додає додаткової цінності цій чотирирічній посаді?
T3 H40

6
Це лише повторення існуючих відповідей.
Панг

4
$result = $data1 . $data2;

спробуйте це


5
Це неправильна відповідь. це призводить до "забарвлення кольору". Також ваша відповідь дублюється з чиєїсь відповіді, опублікованої років тому. Даун проголосував.
Джейсон Лю


0

Мені не зовсім зрозуміло, у чому полягають ваші вимоги, але в основному ви могли б окремо визначити дві змінні і після цього поєднати їх.

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

$result=$data1.$data2;

Роблячи це, ви навіть можете оголосити $ data2 як глобальний рівень, щоб ви могли змінити його значення під час виконання, наприклад, він міг отримати відповідь "червоний" з прапорця.



-1

1.Сполучіть рядок (пробіл між кожною струною)

Фрагмент коду:

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

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

Вихід: SachinTendulkar

2.З'єднайте рядок, де існує простір

Фрагмент коду:

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

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

Вихід: Сахін Тендулкар

  1. Об'єднайте рядок за допомогою функції printf.

Фрагмент коду:

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

Вихід:
SachinTendulkar
Sachin Tendulkar


4
Що пропонує ця відповідь, що в інших відповідях вже не надано?
Джон Конде

@rashedcs для мене чудово працює !! 🏏
IPSDSILVA

-1

Я вважаю, що найефективніший спосіб:

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

Якщо ви хочете реалізувати локалізацію, ви можете зробити щось подібне:

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

Це трохи повільніше, але він не передбачає граматичних правил.


-3

Спробуйте це, ми можемо додати рядок у php із символом крапки (.)

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

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

1
Ця відповідь нічого не дає, інші відповіді ще не надали.
Джон Конде
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.