【问题标题】:Concatenation Operator连接运算符
【发布时间】:2010-06-15 00:45:28
【问题描述】:

这可能是一个愚蠢的问题,但它打动了我,我在这里问。

<?php
  $x="Hi";
  $y=" There";
  $z = $x.$y;
  $a = "$x$y";
  echo "$z"."<br />"."$a";
?>

$z使用了php提供的传统连接操作符进行连接,反之$a没有,

我的问题:

  1. 不使用连接运算符会影响性能吗?

  2. 如果它根本没有连接运算符。

  3. 当一个工作时为什么有两种实现模式?

【问题讨论】:

    标签: php concatenation


    【解决方案1】:
    1. 只有一点点,因为 PHP 必须解析整个字符串以查找变量,而在连接时,它只是将两个变量拼接在一起。因此,性能会受到很小的影响,但对于大多数事情来说并不明显。

    2. 使用连接运算符连接变量(如$_SERVER['DOCUMENT_ROOT'])要容易得多(使用引号,您必须将变量括在括号中或删除数组索引中的单引号;而且它只会让字符串看起来很丑) .另外,连接运算符允许更灵活的格式化。例如,您可以将一个长字符串文字拆分为多行,然后将其不同部分连接起来:

      $blah = "This is a really really long string. I don't even know how " .
          "long it is, but it's really long. Like, longer than an eel " .
          "or even a boa constrictor. Wow.";
      

      您还可以使用连接运算符将函数的返回值直接包含在字符串文字中(您不能在双引号字符串中包含函数调用),如下所示:

      $blah = "This has a " . fn_call() . " result, which can't go in the quotes.";
      
    3. 我不确定我是否完全理解您在这里的要求,但我可以说 PHP 从 Perl 中借鉴了很多东西,Perl 的口头禅之一是“有不止一种方法可以做到这一点。”

    【讨论】:

    • 虽然多行是正确的,但您也可以只使用换行符,它会正常工作。例如,如果您将第一行的 " . \n " 敲掉,它仍然可以工作(但是,如果您明确输入 \n,则使用双引号将被解释为换行符)。
    • +1 仅用于在 PHP 中使用鳗鱼和蛇。蛇通常只能在 Python 语言中找到。
    • 可以在不带括号的字符串中包含数组值,如下所示:"$_SERVER[DOCUMENT_ROOT]"。但仅适用于一维数组索引。
    • @alex:唯一的问题是缩进实际上包含在字符串中。如果您所做的只是将其回显到 HTML,那很好,但在其他情况下可能会导致一些意外结果……@deceze:好点,我会进行编辑以反映这一点。 @Pyronaut:哈,更好的是蟒蛇和蟒蛇密切相关,尽管我在编写示例字符串时甚至没有意识到这一点。
    【解决方案2】:

    一个。是的。 PHP 必须解析字符串中的变量。

    b.因为像这样的行:echo 'Your Ip address is' . get_ip() . '.';

    出于 A 和 B 的原因。

    【讨论】:

      【解决方案3】:

      在某些情况下,你写的更少:

      $someLongVarName ="Hi";
      $someLongVarName .=" there";
      

      VS

      $someLongVarName ="Hi";
      $someLongVarName = "$someLongVarName there";
      

      【讨论】:

        【解决方案4】:

        解决你的最后一个问题:

        每一种语言都有多个意思是做同样的事情。灵活性在每种语言中都很重要,因为任何给定的方法都可能因情况而异。对此您唯一需要担心的是在您自己的代码中保持一致。

        【讨论】:

          猜你喜欢
          • 2017-03-29
          • 2012-01-20
          • 2013-03-15
          • 2011-01-03
          • 2010-09-24
          • 2014-10-12
          • 2014-02-27
          • 2011-06-20
          • 2014-08-02
          相关资源
          最近更新 更多