PHP字符串连接

62

能否像下面这样连接字符串?如果不能,有什么替代方法吗?

while ($personCount < 10) {
    $result += $personCount . "person ";
}

echo $result;

应该显示为1 person 2 person 3,等等。

您不能在连接字符串时使用+ 符号,那么有什么替代方法吗?


8
你的示例代码实际上使用了“替代方案”。 - lanzz
2
我很难相信没有人指出你使用了“people”而不是“person”。 - Mark Gardner
2
更大的问题是为什么PHP使用"."而不是"+"来进行字符串连接?我的意思是... 真的吗? - www-0av-Com
6个回答

99

只需使用.进行字符串连接。而且你忘记了$personCount的增量操作!

while ($personCount < 10) {
    $result .= $personCount . ' people';
    $personCount++;
}

echo $result;

10

我认为更好的一步

$result .= $personCount . ' people';

7

这应该会更快。

while ($personCount < 10) {
    $result .= "{$personCount} people ";
    $personCount++;
}

echo $result;

4
有证据表明"{$personCount} people"$personCount . ' people'更快吗?否则这只是一种猜测... - Jake
PHP在每个“.”运算符上都被迫重新连接。最好使用双引号进行连接。 - Abdul Alim Shakir
1
@Abdul Alim Shakir:但是只有一个连接,所以不应该有任何区别(?)。 - Peter Mortensen
使用 . 而不是 .=(第一个实例)确实会影响性能(可能是由于 Schlemiel the Painter's algorithm - 这可能发生在 任何 语言或系统中),但它已经在使用 .= - Peter Mortensen
赋值运算符 中:使用 $text .= "additional text"; 而不是 $text = $text . "additional text"; 可以显著提高内存分配效率,从而大大提升性能。我仅通过在一个循环中使用第一种模式,对一个包含 800K 字符的字符串 $text 进行了 900 次迭代,就将执行时间从 5 秒降低到了 0.5 秒(提高了 10 倍)。 - Peter Mortensen

6
while ($personCount < 10) {
    $result .= ($personCount++)." people ";
}

echo $result;

0
$personCount = 1;
while ($personCount < 10) {
    $result = 0;
    $result .= $personCount . "person ";
    $personCount++;
    echo $result;
}

6
虽然这段代码可能回答了问题,但是提供关于它如何或为什么解决问题的额外背景信息会提高答案的长期价值。 - Nic3500

0

我认为这段代码应该可以正常工作:

while ($personCount < 10) {
    $result = $personCount . "people ';
    $personCount++;
}
# I do not understand why you need the (+) with the result.
echo $result;

5
请注意,您的文本中应该是"people'而不是'people ' - PhoneixS
1
由于@PhoneixS指出的引号不匹配,您可能会遇到许多错误。 - Mark Gardner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接