连接运算符

时间:2010-06-15 00:45:28

标签: php concatenation

这可能是一个愚蠢的问题,但它让我感到震惊,我在这里问。

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

$z使用php提供的传统连接运算符并连接,相反$ a不会,

我的问题:

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

  2. 如果不是为什么没有连接运算符。

  3. 为什么有人在完成工作时有两种实施方式?

4 个答案:

答案 0 :(得分:3)

  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的一个咒语就是“有不止一种方法可以做到这一点。“

答案 1 :(得分:2)

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

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

VS

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

答案 2 :(得分:2)

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

湾由于以下行:echo 'Your Ip address is' . get_ip() . '.';

原因A和B.

答案 3 :(得分:0)

解决你的上一个问题:

每种语言都有多种做同样的事情。灵活性在每种语言中都很重要,因为任何给定的方法在不同情况下可能会更好。关于这一点,您唯一需要担心的是在您自己的代码中保持一致。