一尘不染

php字符串串联,性能

php

在Java和C#之类的语言中,字符串是不可变的,并且一次建立一个字符的字符串在计算上是昂贵的。在上述语言中,有一些库类可以降低这种成本,例如C#System.Text.StringBuilder和Java
java.lang.StringBuilder

php(4或5;我对两者都感兴趣)是否都共享此限制?如果是这样,是否有类似的解决方案?


阅读 251

收藏
2020-05-26

共1个答案

一尘不染

不,在PHP中没有stringbuilder类的类型,因为字符串是可变的。

话虽如此,根据您在做什么,有不同的方式来构建字符串。

例如,echo将接受逗号分隔的标记以进行输出。

// This...
echo 'one', 'two';

// Is the same as this
echo 'one';
echo 'two';

这意味着您无需实际使用连接就可以输出复杂的字符串,这会比较慢

// This...
echo 'one', 'two';

// Is faster than this...
echo 'one' . 'two';

如果需要在变量中捕获此输出,则可以使用输出缓冲功能来完成。

另外,PHP的数组性能非常好。如果要执行逗号分隔的值列表之类的操作,请使用implode()

$values = array( 'one', 'two', 'three' );
$valueList = implode( ', ', $values );

最后,请确保您熟悉PHP的字符串类型,它的不同定界符以及每个定界符的含义。

2020-05-26