Como combinar duas strings juntas em PHP?


140

Na verdade, não sei como descrever o que queria, mas mostrarei a você:

Por exemplo:

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

O que devo fazer (ou processar) para que $ result seja a combinação de $data1e $data2?

Resultado desejado:

$result = "the color is red";

13
Isso é chamado de "concatenação de strings" e não deve ser mais estrangeiro do que +para números. Comece com um livro / tutorial e familiarize-se com os operadores básicos no idioma.

1
Há muitas maneiras de fazer isso. se você vir a resposta, verifique isso. mas use o mais simples. por exemplo $ result = "$ data1 $ data2"; é isso aí. ou $ resultado = $ dados1. $ dados2;
Java9

1
@Machavity, você pode aumentar magicamente o nível de proteção para que as postagens redundantes não fiquem acumuladas nesta página?
Mckmackusa

Respostas:


206
$result = $data1 . $data2;

Isso é chamado de concatenação de strings. No entanto, seu exemplo não possui espaço; portanto, para isso especificamente, você precisaria de:

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

85

Existem várias maneiras de concatenar duas seqüências juntas.

Use o operador de concatenação .(e .=)

Em PHP .é o operador de concatenação que retorna a concatenação de seus argumentos direito e esquerdo

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

Se você deseja anexar uma string a outra, você usaria o .=operador:

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

Sequências complexas de sintaxe / aspas duplas

No PHP, variáveis ​​contidas em strings entre aspas duplas são interpoladas (ou seja, seus valores são "trocados" pela variável). Isso significa que você pode colocar as variáveis ​​no lugar das strings e apenas colocar um espaço entre elas. Os chavetas deixam claro onde estão as variáveis.

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

Nota: isso também funcionará sem os aparelhos no seu caso:

$result = "$data1 $data2";

Você também pode concatenar valores de matriz dentro de uma sequência:

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

Use sprintf()ouprintf()

sprintf()nos permite formatar strings usando poderosas opções de formatação. É um exagero para concatenação tão simples, mas é útil quando você tem uma sequência complexa e / ou deseja fazer alguma formatação dos dados também.

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

printf() faz a mesma coisa, mas exibirá imediatamente a saída.

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

Heredoc

Heredocs também podem ser usados ​​para combinar variáveis ​​em uma string.

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

Use um ,comecho()

Isso funciona apenas ao ecoar o conteúdo e não ao atribuir a uma variável. Mas você pode usar uma vírgula para separar uma lista de expressões para o PHP ecoar e usar uma string com um espaço em branco como uma dessas expressões:

echo $data1, ' ', $data2;

21

Ninguém mencionou isso, mas há outra possibilidade. Estou usando-o para grandes consultas sql. Você pode usar. = Operador :)

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

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

"Estou usando-o para grandes consultas sql." - observe que é uma maneira típica de obter en.wikipedia.org/wiki/SQL_injection
reduzindo a atividade

como concatenar exatamente a string dessa ou de outra maneira me dará injeção de sql na minha consulta parametrizada?
codelame 5/09/19

Criar manualmente consultas SQL inteiras (pelo menos sugeridas por "para consultas SQL enormes") não está OK. Preparando apenas parâmetros, consultas não inteiras devem estar protegidas contra esse risco de segurança específico.
reduzindo a atividade

19

Concatene-os com o .operador:

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

Ou use interpolação de string:

$result = "$data1 $data2";

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

é mais genérico.


1
isto é muito útil no caso de você querer fazer uma lista delimitada como ele verifica se o vars tem nenhum valores $email_to = implode(', ', array($addr1, $addr2, addr3));sem necessidade de if($addr != '')etc
Aba

4
Não escolha funções de matriz, a menos que você precise. Porque as funções de matriz são sempre mais lentas que os operadores. Além disso; eles usam mais ram.
MERT DOĞAN

9

Outro formulário disponível é este:

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

6

Você pode tentar a seguinte linha de código

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

Prefiro usar aspas simples em vez de aspas duplas. ligação
Jack

5

Um período é usado para concatenar seqüências de caracteres. Exemplo simples para transformar duas variáveis ​​de string em uma única variável:

$full = $part1 . $part2;

No seu exemplo, você gostaria de fazer:

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

Você notará que adicionei uma sequência de um espaço entre as duas variáveis. Isso ocorre porque o original $data1não terminou com um espaço. Se você os combinasse sem ele, sua $resultvariável acabaria parecendo the color isred.


5

Você pode fazer isso usando PHP:

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

Isso combinará duas strings e o putput será: "a cor é vermelha!".


1
Seus valores de entrada fabricados não representam a sequência de entrada do OP e você está ecoando soluções que foram declaradas ANOS antes. Esta não é uma questão de javascript, portanto, o conselho é irrelevante. Esta postagem não agrega valor à página.
Mckmackusa 6/07/2018

@mickmackusa, ok I texto atualizado, você está certo, mas eu dei js responder aqui porque esta é uma pergunta muito básica para que o usuário pode aprender a diferença
Sunil

1
Sua atualização NÃO está usando o texto do OP. Não forneça soluções javascript para perguntas de php. Esta resposta está mal formatada e não agrega valor à página.
Mckmackusa 6/07

4
$s = "my name is ";

$s .= "keyur";

echo $s; 

resultado:

my name is keyur

9
Bem-vindo ao StackOverflow. É bom, se você responder a perguntas. No entanto, se o fizer, formate-o adequadamente. Além disso, sua resposta já foi dada. Como isso agrega valor adicional a esse post de quatro anos ?
T3 H40

6
Esta é apenas uma repetição das respostas existentes.
Pang

4
$result = $data1 . $data2;

tente isso


5
Esta não é a resposta correta. resulta "a cor está vermelha". Além disso, sua resposta é duplicada da resposta de alguém postada anos atrás. Abaixo votado.
Jason Liu


0

Não sou exatamente claro com quais são seus requisitos, mas basicamente você pode definir separadamente as duas variáveis ​​e depois combiná-las.

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

$result=$data1.$data2;

Ao fazer isso, você pode até declarar $ data2 como um nível global para alterar seu valor durante a execução, por exemplo, ele pode obter a resposta "vermelho" em uma caixa de seleção.


0

combinar duas strings juntas em PHP?

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

2
Esta resposta não oferece nada que as outras respostas ainda não tenham fornecido e não explica o porquê ou como isso funciona.
John Conde

-1

1.Concatenar a sequência (espaço entre cada sequência)

Fragmento de código :

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

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

Saída: SachinTendulkar

2.Concatenar a cadeia de caracteres onde existe espaço

Fragmento de código :

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

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

Saída: Sachin Tendulkar

  1. Concatene a sequência usando a função printf.

Fragmento de código :

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

Saída:
SachinTendulkar
Sachin Tendulkar


4
O que essa resposta oferece que ainda não foi fornecida pelas outras respostas?
John Conde

@rashedcs Funciona muito bem para mim !! 🏏
IPSDSILVA

-1

Eu acredito que a maneira mais eficiente é:

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

Se você deseja implementar a localização, pode fazer algo assim:

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

É um pouco mais lento, mas não assume regras gramaticais.


-3

Tente isso, podemos acrescentar uma string em php com o símbolo de ponto (.)

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

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

1
Esta resposta não oferece nada que as outras respostas ainda não tenham fornecido.
John Conde
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.