How can I combine two strings together in PHP?
Asked Answered
S

19

202

I don't actually know how to describe what I wanted, but I'll show you:

For example:

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

What should I do (or process) so $result is the combination of $data1 and $data2?

Desired result:

$result = "the color is red";
Steffie answered 1/12, 2011 at 5:18 Comment(0)
G
293
$result = $data1 . $data2;

This is called string concatenation. Your example lacks a space though, so for that specifically, you would need:

$result = $data1 . ' ' . $data2;
Gilgilba answered 1/12, 2011 at 5:22 Comment(0)
H
143

There are several ways to concatenate two strings together.

Use the concatenation operator . (and .=)

In PHP . is the concatenation operator which returns the concatenation of its right and left arguments

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

If you want to append a string to another string you would use the .= operator:

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

Complex (curly) syntax / double quotes strings

In PHP variables contained in double quoted strings are interpolated (i.e. their values are "swapped out" for the variable). This means you can place the variables in place of the strings and just put a space in between them. The curly braces make it clear where the variables are.

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

Note: this will also work without the braces in your case:

$result = "$data1 $data2";

You can also concatenate array values inside a string :

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

Use sprintf() or printf()

sprintf() allows us to format strings using powerful formatting options. It is overkill for such simple concatenation but it handy when you have a complex string and/or want to do some formatting of the data as well.

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

printf() does the same thing but will immediately display the output.

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

Heredoc

Heredocs can also be used to combine variables into a string.

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

Use a , with echo()

This only works when echoing out content and not assigning to a variable. But you can use a comma to separate a list of expressions for PHP to echo out and use a string with one blank space as one of those expressions:

echo $data1, ' ', $data2;
Hungerford answered 23/3, 2015 at 20:51 Comment(0)
P
30

Another possibility is the .= operator. I'm using it for huge SQL queries.

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

echo $string; // Gives: the color is red
Pitsaw answered 26/11, 2014 at 9:50 Comment(3)
"I'm using it for huge sql queries." - note that it is a typical way of getting en.wikipedia.org/wiki/SQL_injectionPitchblende
how exactly concatenating string this or other way will give me sql injection in my parameterized query?Pitsaw
Manually building entire SQL queries (at least suggested by "for huge sql queries") is not OK. Preparing just parameters, not entire queries should be safe from this specific security risk.Pitchblende
P
22

Concatenate them with the . operator:

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

Or use string interpolation:

$result = "$data1 $data2";
Paramecium answered 1/12, 2011 at 5:22 Comment(0)
I
15
$result = implode(' ', array($data1, $data2));

is more generic.

Imparadise answered 19/11, 2014 at 4:19 Comment(2)
this is very useful in a case where you want to make a delimited list as it checks if the vars have any values $email_to = implode(', ', array($addr1, $addr2, addr3)); no need for if($addr != '') etcSantiagosantillan
Don't choose array functions, unless you must. Because array functions allways slower than operators. Additionally; they use more ram.Showman
T
11

Another form available is this:

<?php
$data1 = "the color is";
$data2 = "red";
$result = "{$data1} {$data2}";
Ted answered 1/12, 2011 at 6:10 Comment(0)
N
7

You can try the following line of code

$result = $data1 . " " . $data2;
Nepean answered 1/12, 2011 at 5:22 Comment(1)
I would rather use single quotes instead of double quotes. linkKunlun
F
7

You can do this using PHP:

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

This will combine two strings and the output will be: "the color is red!".

Funch answered 22/6, 2016 at 9:59 Comment(3)
Your fabricated input values do not represent the OP's input string and you are echoing solutions that have been stated YEARS earlier. This is not a javascript question so that advice is irrelevant. This post adds no value to the page.Powel
@mickmackusa, ok I updated text, you are right but I gave js answer here because this is a very basic question so the user can learn the differenceFunch
Your update is NOT using the OP's text. Do not provide javascript solutions to php questions. This answer is poorly formatted and adds no value to the page.Powel
I
5

A period is used to concatenate strings. Simple example to turn two string variables into a single variable:

$full = $part1 . $part2;

In your example, you'd want to do:

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

You'll notice I added a string of one space between the two variables. This is because your original $data1 did not end with a space. If you had combined them without it, your $result variable would end up looking like the color isred.

Indefensible answered 1/12, 2011 at 5:23 Comment(0)
B
4

This should work for you:

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

Reference: PHP String Variables

Backfield answered 1/12, 2011 at 5:23 Comment(0)
C
4

Try this:

$result = $data1 . $data2;
Colson answered 19/11, 2016 at 21:59 Comment(1)
This isn't correct answer. it results "the color isred". Also, your answer is duplicated from someone's answer posted years ago. Down voted.Gorgeous
S
3

I am not exactly clear with what your requirements are, but basically you could separately define the two variables and thereafter combine them together.

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

$result=$data1.$data2;

By doing so you can even declare $data2 as a global level, so you could change its value during execution. For instance, it could obtain the answer "red" from a checkbox.

Shepherd answered 1/12, 2011 at 5:27 Comment(0)
U
3
$s = "my name is ";

$s .= "keyur";

echo $s; 

result:

my name is keyur
Ubangi answered 22/3, 2016 at 13:15 Comment(2)
Welcome to StackOverflow. It is nice, if you answer questions. However, if you do, please format it propertly. Further, your answer was already given. How does it add additional value to this four year old post?Aether
This is just a repeat of the existing answers.Mccourt
A
1
$result = $data1 . ' ' . $data2;

or

The best way.

$result = "$data1 $data2";

or

$result = "{$data1} {$data2};
Atingle answered 14/8, 2022 at 7:27 Comment(0)
P
0

The easiest way that already mentioned here:

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

In some cases you may need to use functions like join() or implode(). Both the functions does the same thing that is it convert array items into string.

Example 1:

$result = join(' ', [$data1, $data2]);

Example 2:

$result = implode(' ', [$data1, $data2]);
Pyemia answered 26/6, 2022 at 6:56 Comment(0)
E
0

you can make your on array have empty not empty values; and use filter and implode to make full sentence

$str1 = 'hello';
$str2 = 'my name';
$str3 = 'vijay';
$str4 = '';
$fullsentence = array_filter([$str1, $str2, $str3, $str4]);
echo implode(' ', $fullsentence);
Eckard answered 28/9, 2022 at 6:35 Comment(0)
O
-1
  1. Concatenate the string (space between each string)

    Code Snippet:

    <?php
        $txt1 = "Sachin";
        $txt2 = "Tendulkar";
    
        $result = $txt1 . $txt2 ;
        echo $result . "\n";
    ?>
    

    Output: SachinTendulkar

  2. Concatenate the string where space exists

    Code Snippet:

     <?php
         $txt1 = "Sachin";
         $txt2 = "Tendulkar";
    
         $result = $txt1 . " " . $txt2;
         echo $result . "\n";
     ?>
    

    Output: Sachin Tendulkar

  3. Concatenate the string using printf function.

    Code Snippet:

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

    Output:

     SachinTendulkar
     Sachin Tendulkar
    
Organ answered 3/6, 2017 at 9:57 Comment(1)
What does this answer offer that hasn't already been provided by the other answers?Hungerford
L
-1

Combine two strings together in PHP:

$result = $data1 . ' ' . $data2;
Latrice answered 5/8, 2019 at 11:51 Comment(1)
This answer offers nothing the other answers haven't already provided and offers no explanation as to why or how this works.Hungerford
S
-3

Try this. We can append a string in PHP with the dot (.) symbol

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

echo $data1 . $data2; // The color isred
echo $data1 . " " . $data2; // The color is red (we have appended space)
Statued answered 2/8, 2019 at 9:54 Comment(1)
This answer offers nothing the other answers haven't already provided.Hungerford

© 2022 - 2024 — McMap. All rights reserved.