How to combine two strings together in PHP?

2018-12-30 23:24发布

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

15条回答
素衣白纱
2楼-- · 2018-12-30 23:59

Another form available is this:

<?php
$data1 = "the color is";
$data2 = "red";
$result = "{$data1} {$data2}";
查看更多
千与千寻千般痛.
3楼-- · 2018-12-31 00:02

Concatenate them with the . operator:

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

Or use string interpolation:

$result = "$data1 $data2";
查看更多
浅入江南
4楼-- · 2018-12-31 00:03
$result = implode(' ', array($data1, $data2));

is more generic.

查看更多
美炸的是我
5楼-- · 2018-12-31 00:04

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

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;
查看更多
冷夜・残月
6楼-- · 2018-12-31 00:04

You can do this using PHP:

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

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

查看更多
梦醉为红颜
7楼-- · 2018-12-31 00:08

I believe the most performant way is:

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

If you want to implement localisation, you may do something like this:

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

It's a bit slower, but it does not assume grammar rules.

查看更多
登录 后发表回答