当前位置: 首页 > 面试题库 >

php字符串串联,性能

颜森
2023-03-14
问题内容

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

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


问题答案:

不,在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的字符串类型,它的不同定界符以及每个定界符的含义。



 类似资料:
  • 问题内容: 我需要知道是否可以连接字符串,如下所示?如果没有,那么还有什么选择呢? 它应该看起来像人等。 您不能在串联中使用符号,那么替代方法是什么? 问题答案: 仅用于连接。而您错过了增量!

  • 本文向大家介绍通过+(字符串串联)运算符进行字符串串联。,包括了通过+(字符串串联)运算符进行字符串串联。的使用技巧和注意事项,需要的朋友参考一下 您可以使用Java的“ +”运算符来连接字符串。 示例 输出结果

  • 问题内容: 以下语句, 产生输出。 但是,以下内容 产生。 区别在哪里? 问题答案: 您会因为操作符优先级和字符串转换的结合而看到此行为。 JLS 15.18.1 指出: 如果只有一个操作数表达式的类型为String,则对另一操作数执行字符串转换(第5.1.11节),以在运行时生成字符串。 因此,第一个表达式中的右侧操作数将隐式转换为字符串: 但是对于第二个表达式,必须将复合赋值运算符与一起考虑。

  • 问题内容: 我正在从事Java代码优化。我不清楚或符号之间的区别: 第2行和第3行有什么区别? 问题答案: 这种方法使用StringBuilder创建结果字符串 此方法仅调用的静态方法来获取int的String版本 依次调用

  • 主要内容:PHP 中的字符串变量,实例,PHP 并置运算符,实例,PHP strlen() 函数,实例,PHP strpos() 函数,实例,完整的 PHP String 参考手册字符串变量用于存储并处理文本。 PHP 中的字符串变量 字符串变量用于包含有字符的值。 在创建字符串之后,我们就可以对它进行操作了。您可以直接在函数中使用字符串,或者把它存储在变量中。 在下面的实例中,我们创建一个名为 txt 的字符串变量,并赋值为 "Hello world!" 。然后我们输出 txt 变量的值: 实

  • 问题内容: 我试图理解字符串比较与字符串比较的输出。需要明确的是,我拥有使用==和equals比较两个字符串的类。我试图将==和equals()的输出合并为字符串。equals()的输出会连续显示,但==的输出不会 连续显示。使用Java的装箱功能,将与字符串连接的布尔值联系起来。equals和==都返回布尔值。那么为什么会有这种差异呢?有人可以解释吗? 输出 更新:答案 如果不使用s1 == s