¿Cómo combinar dos cadenas juntas en PHP?

140

En realidad no sé cómo describir lo que quería, pero te mostraré:

Por ejemplo:

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

¿Qué debo hacer (o procesar) para que $ result sea la combinación de $data1y $data2?

Resultado deseado:

$result = "the color is red";
Glennanyway
fuente
13
Esto se llama "concatenación de cadenas" y no debe ser más extraño que +para los números. Comience con un libro / tutorial y familiarícese con los operadores básicos del idioma.
1
Hay muchas maneras de hacerlo. Si ve la respuesta, puede comprobarlo. pero usa el más simple. por ejemplo $ result = "$ data1 $ data2"; Eso es. o $ resultado = $ datos1. $ datos2;
jewelhuq
1
@Machavity ¿puedes aumentar mágicamente el nivel de protección para que las publicaciones redundantes no se acumulen en esta página?
mickmackusa

Respuestas:

206
$result = $data1 . $data2;

Esto se llama concatenación de cadenas. Sin embargo, su ejemplo carece de espacio, por lo que específicamente para eso, necesitaría:

$result = $data1 . ' ' . $data2;
Logan Serman
fuente
85

Hay varias formas de concatenar dos cadenas juntas.

Utilice el operador de concatenación .(y .=)

En PHP .es el operador de concatenación que devuelve la concatenación de sus argumentos derecho e izquierdo

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

Si desea agregar una cadena a otra cadena, usaría el .=operador:

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

Sintaxis compleja (rizada) / cadenas de comillas dobles

En PHP, las variables contenidas en cadenas dobles entre comillas se interpolan (es decir, sus valores se "intercambian" por la variable). Esto significa que puede colocar las variables en lugar de las cadenas y simplemente colocar un espacio entre ellas. Las llaves se aclaran dónde están las variables.

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

Nota: esto también funcionará sin las llaves en su caso:

$result = "$data1 $data2";

También puede concatenar valores de matriz dentro de una cadena:

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

Use sprintf()oprintf()

sprintf()nos permite formatear cadenas usando potentes opciones de formateo. Es excesivo para una concatenación tan simple, pero es útil cuando tiene una cadena compleja y / o también desea formatear algunos datos.

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

printf() hace lo mismo pero mostrará inmediatamente la salida.

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

Heredoc

Heredocs también se puede utilizar para combinar variables en una cadena.

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

Use un ,conecho()

Esto solo funciona cuando se repite el contenido y no se asigna a una variable. Pero puede usar una coma para separar una lista de expresiones para que PHP se repita y use una cadena con un espacio en blanco como una de esas expresiones:

echo $data1, ' ', $data2;
John Conde
fuente
21

Nadie mencionó esto, pero hay otra posibilidad. Lo estoy usando para grandes consultas sql. Puede usar. = Operador :)

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

echo $string; // gives: the color is red
codelame
fuente
"Lo estoy usando para grandes consultas SQL". - tenga en cuenta que es una forma típica de obtener en.wikipedia.org/wiki/SQL_injection
reducir la actividad
¿Cómo exactamente la cadena de concatenación de esta u otra forma me dará inyección de sql en mi consulta parametrizada?
codelame
La creación manual de consultas SQL completas (al menos sugeridas por "para consultas sql enormes") no está bien. Al preparar solo parámetros, no todas las consultas deben estar a salvo de este riesgo de seguridad específico.
reducción de la actividad el
19

Concatenelos con el .operador:

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

O use la interpolación de cadenas:

$result = "$data1 $data2";
Jeremy Ruten
fuente
11
$result = implode(' ', array($data1, $data2));

Es más genérico.

¿Por qué 50 puntos para comentar ...
fuente
1
Esto es muy útil en un caso en el que desea hacer una lista delimitada por la que comprueba si los VARs tienen ningún valor $email_to = implode(', ', array($addr1, $addr2, addr3));sin necesidad de if($addr != '')etc
Aba
44
No elija funciones de matriz, a menos que deba hacerlo. Porque la matriz funciona siempre más lenta que los operadores. Adicionalmente; usan más carnero.
MERT DOĞAN
9

Otra forma disponible es esta:

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

Puedes probar la siguiente línea de código

$result = $data1." ".$data2;
usuario710502
fuente
Prefiero usar comillas simples en lugar de comillas dobles. enlace
Jack
5

Se utiliza un punto para concatenar cadenas. Ejemplo simple para convertir dos variables de cadena en una sola variable:

$full = $part1 . $part2;

En tu ejemplo, te gustaría hacer:

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

Notarás que agregué una cadena de un espacio entre las dos variables. Esto se debe a que su original $data1no terminó con un espacio. Si los hubiera combinado sin él, su $resultvariable terminaría pareciéndose the color isred.

Aken Roberts
fuente
5

Puedes hacer esto usando PHP:

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

Esto combinará dos cadenas y el putput será: "¡el color es rojo!".

sunil
fuente
1
Sus valores de entrada fabricados no representan la cadena de entrada del OP y está haciendo eco de soluciones que se han indicado AÑOS anteriormente. Esta no es una pregunta de JavaScript, por lo que los consejos son irrelevantes. Esta publicación no agrega valor a la página.
mickmackusa
@mickmackusa, ok texto actualizado, tiene usted razón, pero me dio js respuesta aquí porque esta es una pregunta muy básica por lo que el usuario puede aprender la diferencia
Sunil
1
Su actualización NO está utilizando el texto del OP. No proporcione soluciones javascript para preguntas php. Esta respuesta está mal formateada y no agrega valor a la página.
mickmackusa
4
$s = "my name is ";

$s .= "keyur";

echo $s; 

resultado:

my name is keyur
keyur sojitra
fuente
9
Bienvenido a StackOverflow. Es bueno, si respondes preguntas. Sin embargo, si lo hace, formatee correctamente. Además, su respuesta ya fue dada. ¿Cómo agrega valor adicional a esta publicación de cuatro años ?
T3 H40
66
Esto es solo una repetición de las respuestas existentes.
Pang
4
$result = $data1 . $data2;

prueba esto

Farhan
fuente
55
Esta no es la respuesta correcta. resulta "el color isred". Además, su respuesta está duplicada de la respuesta de alguien publicada hace años. Abajo votado.
Jason Liu el
0

No estoy exactamente claro cuáles son sus requisitos, pero básicamente podría definir por separado las dos variables y luego combinarlas.

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

$result=$data1.$data2;

Al hacerlo, incluso puede declarar $ data2 como un nivel global para que pueda cambiar su valor durante la ejecución, por ejemplo, podría obtener la respuesta "rojo" de una casilla de verificación.

Yoosuf
fuente
0

combinar dos cadenas juntas en PHP?

$result = $data1 . ' ' . $data2;
Rafi Ullah Patel
fuente
2
Esta respuesta no ofrece nada que las otras respuestas aún no han proporcionado y no ofrece una explicación de por qué o cómo funciona.
John Conde el
-1

1. Concatene la cadena (espacio entre cada cadena)

Fragmento de código :

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

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

Salida: SachinTendulkar

2. Concatene la cadena donde existe espacio

Fragmento de código :

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

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

Salida: Sachin Tendulkar

  1. Concatene la cadena con la función printf.

Fragmento de código :

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

Salida:
SachinTendulkar
Sachin Tendulkar

rashedcs
fuente
44
¿Qué ofrece esta respuesta que aún no han proporcionado las otras respuestas?
John Conde
@rashedcs ¡Funciona muy bien para mí! 🏏
IPSDSILVA
-1

Creo que la forma más eficaz es:

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

Si desea implementar la localización, puede hacer algo como esto:

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

Es un poco más lento, pero no asume reglas gramaticales.

Pedro Amaral Couto
fuente
-3

Pruebe esto, podemos agregar cadenas en php con el símbolo de punto (.)

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

echo $data1.$data2; //the color isred
echo $data1." ".$data2; // the color is red (we have appended space)
Kankatala Krishna
fuente
1
Esta respuesta no ofrece nada que las otras respuestas no hayan proporcionado.
John Conde