用于PHP的StringBuilder

Mar*_*ark 46 php stringbuilder

有人StringBuilder在PHP中实现了吗?

Mar*_*ens 92

注意:

这个答案是从2010年开始,可能会有字符串构建者现在可以提高性能(从下面的评论来看).我已经很长时间没有使用php了,所以我的知识不是最新的.这个答案可能已经过时了.


为什么要使用StringBuilder?php中的字符串是可变的.因此,性能不是问题.

只需像这样构建字符串

$string = "start";
$string .= "appended string";
$string .= "appended string";
etc.
Run Code Online (Sandbox Code Playgroud)

  • 我会+1,但连接运算符是`.=`,而不是`+ =`(`+ =`用于加法,这是一个不同的连接运算符)... (11认同)
  • 对于记录,PHP中的字符串_not_ - 以任何方式 - 与字符串缓冲区一样快. (3认同)
  • 哎呀,谢谢你指出了这一点.要习惯java:P.现在修好了. (2认同)
  • 是的,这是一种痛苦:P.每次我切换到php时,这个错误都让我发疯. (2认同)
  • 这太天真了。你不能肯定地说这个;因为你需要熟悉php内部数据结构。我没有看到源代码,是吗? (2认同)

Rob*_*itt 7

您可以使用sprintf哪个只是一个基本版本,但不需要额外的库,示例请遵循

$String = "Firstname %s, lastname %s, Age %d";
echo sprintf($String,"Robert","Pitt",22);
Run Code Online (Sandbox Code Playgroud)

并且还处理类型铸造和位置更换:

$format = "The %2$s contains %1$d monkeys. That's a nice %2$s full of %1$d monkeys.";
sprintf($format, $num, $location);
Run Code Online (Sandbox Code Playgroud)

虽然我喜欢雅各布答案的外观:)

接下来看看他的功能和姐妹功能的强大功能:http: //php.net/manual/en/function.sprintf.php

  • @Webnet嗯,它适用于在别处定义的字符串(例如在翻译文件中).否则它只不过是一个神奇的字符串(与[幻数]相同的概念(http://en.wikipedia.org/wiki/Magic_number)) (4认同)