【问题标题】:How can I combine two strings together in PHP?如何在 PHP 中将两个字符串组合在一起?
【发布时间】:2015-08-24 03:45:13
【问题描述】:

我实际上不知道如何描述我想要的,但我会告诉你:

例如:

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

我应该做什么(或处理)所以 $result 是 $data1$data2 的组合?

想要的结果:

$result = "the color is red";

【问题讨论】:

  • 有很多方法可以做到这一点。如果你看到答案,你可以检查出来。但使用最简单的。例如 $result="$data1 $data2";而已。或 $result=$data1.$data2;
  • @Machavity 你能神奇地提高保护级别,这样多余的帖子就不会一直堆积在这个页面上吗?
  • 我认为 OP 提出了一个过于基本的问题的上述批评是 SO 获得初学者去的如此敌对和不友好的地方的声誉的部分原因。我认为这对网站来说是一个完全有效的问题。但是,我确实对 OP 九年来没有接受非常详细和有用的答案这一事实提出异议。不要忘记勾选按钮 OP!

标签: php string variables combinations


【解决方案1】:
$result = $data1 . $data2;

这称为字符串连接。您的示例缺少空格,因此具体而言,您需要:

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

【讨论】:

    【解决方案2】:

    有几种方法可以将两个字符串连接在一起。

    使用串联运算符.(和.=

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

    【讨论】:

      【解决方案3】:

      另一种可能性是.= 运算符。我将它用于大型 SQL 查询。

      $string = "the color is ";
      $string .= "red";
      
      echo $string; // Gives: the color is red
      

      【讨论】:

      • “我将它用于大型 sql 查询。” - 请注意,这是获取en.wikipedia.org/wiki/SQL_injection 的典型方式
      • 在我的参数化查询中究竟如何以这种或其他方式连接字符串会给我 sql 注入?
      • 手动构建整个 SQL 查询(至少“对于巨大的 sql 查询”建议)是不行的。只准备参数,而不是整个查询应该可以避免这种特定的安全风险。
      【解决方案4】:

      . 运算符连接它们:

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

      或者使用字符串插值:

      $result = "$data1 $data2";
      

      【讨论】:

        【解决方案5】:
        $result = implode(' ', array($data1, $data2));
        

        更通用。

        【讨论】:

        • 这在您想要创建一个分隔列表的情况下非常有用,因为它会检查变量是否具有任何值 $email_to = implode(', ', array($addr1, $addr2, addr3)); 不需要 if($addr != '')
        • 除非必须,否则不要选择数组函数。因为数组函数总是比运算符慢。此外;他们使用更多的内存。
        【解决方案6】:

        另一种可用的形式是:

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

        【讨论】:

          【解决方案7】:

          您可以使用 PHP 做到这一点:

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

          这将组合两个字符串,输出将是:“颜色是红色!”。

          【讨论】:

          • 您捏造的输入值不代表 OP 的输入字符串,并且您正在呼应几年前已陈述的解决方案。这不是一个 javascript 问题,因此建议是无关紧要的。这篇文章没有为页面增加任何价值。
          • @mickmackusa,好的,我更新了文本,你是对的,但我在这里给出了 js 答案,因为这是一个非常基本的问题,因此用户可以了解差异
          • 您的更新未使用 OP 的文本。不要为 php 问题提供 javascript 解决方案。这个答案的格式很差,对页面没有任何价值。
          【解决方案8】:

          你可以试试下面这行代码

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

          【讨论】:

          • 我宁愿使用单引号而不是双引号。 link
          【解决方案9】:

          句点用于连接字符串。将两个字符串变量转换为单个变量的简单示例:

          $full = $part1 . $part2;
          

          在你的例子中,你想做:

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

          你会注意到我在两个变量之间添加了一个空格的字符串。这是因为您原来的 $data1 没有以空格结尾。如果您在没有它的情况下将它们组合在一起,您的 $result 变量最终会看起来像 the color isred

          【讨论】:

            【解决方案10】:

            这应该适合你:

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

            参考:PHP String Variables

            【讨论】:

              【解决方案11】:
              $s = "my name is ";
              
              $s .= "keyur";
              
              echo $s; 
              

              结果:

              my name is keyur
              

              【讨论】:

              • 欢迎来到 StackOverflow。很好,如果你回答问题。但是,如果这样做,请正确格式化。此外,您的答案已经给出。它如何为这篇 4 岁的 帖子增加额外的价值?
              • 这只是对现有答案的重复。
              【解决方案12】:

              试试这个:

              $result = $data1 . $data2;
              

              【讨论】:

              • 这不是正确的答案。结果是“颜色为红色”。此外,您的答案与几年前发布的某人的答案重复。投反对票。
              【解决方案13】:

              我不太清楚你的要求是什么,但基本上你可以分别定义这两个变量,然后将它们组合在一起。

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

              通过这样做,您甚至可以将 $data2 声明为全局级别,因此您可以在执行期间更改其值。例如,它可以从复选框中获得答案“红色”。

              【讨论】:

                【解决方案14】:

                在 PHP 中将两个字符串组合在一起:

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

                【讨论】:

                • 这个答案没有提供其他答案尚未提供的内容,也没有解释为什么或如何工作。
                【解决方案15】:

                我认为最高效的方式是:

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

                如果你想实现本地化,你可以这样做:

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

                速度有点慢,但不假设语法规则。

                【讨论】:

                  【解决方案16】:
                  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";
                     ?>
                    

                    输出:Sachin Tendulkar

                  3. 使用 printf 函数连接字符串。

                    代码片段:

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

                    输出:

                     SachinTendulkar
                     Sachin Tendulkar
                    

                  【讨论】:

                  • 此答案提供了其他答案尚未提供的哪些内容?
                  • @rashedcs 非常适合我!! ?
                  【解决方案17】:

                  试试这个。我们可以在 PHP 中附加一个带有点 (.) 符号的字符串

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

                  【讨论】:

                  • 这个答案没有提供其他答案尚未提供的内容。
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-12-20
                  相关资源
                  最近更新 更多