Как объединить две строки вместе в PHP?


148

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

Например:

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

Что мне делать (или обрабатывать), чтобы $ result был комбинацией $data1и $data2?

Желаемый результат:

$result = "the color is red";

13
Это называется «конкатенацией строк» ​​и должно быть не более чуждым, чем +для чисел. Начните с книги / руководства и ознакомьтесь с основными операторами языка.

1
Есть много способов сделать это. если вы видите ответ, вы можете это проверить. но воспользуйтесь самым простым. например $ result = "$ data1 $ data2"; вот и все. или $ result = $ data1. $ data2;
jewelhuq

1
@Machavity, можете ли вы волшебным образом повысить уровень защиты, чтобы лишние сообщения не накапливались на этой странице?
mickmackusa 06

Я думаю, что приведенная выше критика, которую OP задал слишком базовому вопросу, является частью причины, по которой SO приобрела репутацию такого враждебного и недружелюбного места для новичков. Думаю, это вполне актуальный вопрос для сайта. Однако меня не устраивает тот факт, что OP не принимал очень подробный и полезный ответ за девять лет. Не забывайте про галочку OP!
Лу,

Ответы:


215
$result = $data1 . $data2;

Это называется конкатенацией строк. Однако в вашем примере не хватает места, поэтому для этого вам понадобится:

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

93

Есть несколько способов связать две строки вместе.

Используйте оператор конкатенации ..=)

В 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;

Heredoc

Heredocs также можно использовать для объединения переменных в строку.

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

Используйте ,сecho()

Это работает только при выводе содержимого, а не при назначении переменной. Но вы можете использовать запятую, чтобы разделить список выражений для вывода PHP, и использовать строку с одним пробелом в качестве одного из этих выражений:

echo $data1, ' ', $data2;

22

Об этом никто не говорил, но есть и другая возможность. Я использую его для огромных запросов sql. Вы можете использовать оператор. = :)

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

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

«Я использую его для огромных запросов sql». - обратите внимание, что это типичный способ получить en.wikipedia.org/wiki/SQL_injection
снижение активности

как именно объединение строки тем или иным способом даст мне sql-инъекцию в моем параметризованном запросе?
codelame 05

Создание целых SQL-запросов вручную (по крайней мере, предложенное «для огромных sql-запросов») недопустимо. Подготовка только параметров, а не целых запросов должна быть защищена от этой конкретной угрозы безопасности.
снижение активности

19

Соедините их с .оператором:

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

Или используйте строковую интерполяцию:

$result = "$data1 $data2";

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

более общий.


1
это очень полезно в случае, когда вы хотите составить список с разделителями, поскольку он проверяет, имеют ли вары какие-либо значения, в которых $email_to = implode(', ', array($addr1, $addr2, addr3));нет необходимости и if($addr != '')т. д.
Aba

4
Не выбирайте функции массива без необходимости. Потому что массивы всегда работают медленнее, чем операторы. Дополнительно; они используют больше баранов.
MERT DOAN

9

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

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

7

Вы можете сделать это с помощью PHP:

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

Это объединит две строки, и результат будет: «цвет красный!».


1
Ваши сфабрикованные входные значения не представляют входную строку OP, и вы повторяете решения, которые были заявлены ГОДами ранее. Это не вопрос javascript, поэтому совет не имеет значения. Этот пост не добавляет ценности странице.
mickmackusa 06

@mickmackusa, хорошо, я обновил текст, вы правы, но я дал здесь js-ответ, потому что это очень простой вопрос, чтобы пользователь мог узнать разницу
Сунил

1
В вашем обновлении НЕ используется текст OP. Не предоставляйте javascript-решения для вопросов php. Этот ответ плохо отформатирован и не добавляет ценности странице.
mickmackusa 06

6

Вы можете попробовать следующую строку кода

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

Я бы предпочел использовать одинарные кавычки вместо двойных. link
Джек

5

Точка используется для объединения строк. Простой пример преобразования двух строковых переменных в одну:

$full = $part1 . $part2;

В вашем примере вам нужно сделать:

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

Вы заметите, что я добавил строку из одного пробела между двумя переменными. Это потому, что ваш оригинал $data1не заканчивался пробелом. Если бы вы скомбинировали их без него, ваша $resultпеременная выглядела бы так the color isred.


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 как глобальный уровень, чтобы вы могли изменять его значение во время выполнения, например, он мог бы получить ответ «красный» от флажка.


0

объединить две строки вместе в PHP?

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

2
Этот ответ не предлагает ничего, что еще не было предоставлено другими ответами, и не предлагает никаких объяснений относительно того, почему и как это работает.
Джон Конде

-1

Я считаю, что наиболее эффективный способ:

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

Если вы хотите реализовать локализацию, вы можете сделать что-то вроде этого:

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

Это немного медленнее, но не предполагает грамматических правил.


-2

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); 
?>

Продукт:
СачинТендулкар
Сачин Тендулкар


4
Что предлагает этот ответ, чего еще не было в других ответах?
Джон Конде

@rashedcs У меня отлично работает !! 🏏
IPSDSILVA

-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.