Php 字符串连接导致超时

Php 字符串连接导致超时,php,string,timeout,performance,concatenation,Php,String,Timeout,Performance,Concatenation,下面是我最近添加到PHP中的一段代码,它接受一个整数数组($naEUS)并对其进行迭代,在数字之间添加逗号,开始和结束部分除外。最终结果应该是如下所示的字符串:(####,###,##,##,#) $num=count($naEUS[$f]); $resultsFields_values=“(”; 对于($b=0;$b

下面是我最近添加到PHP中的一段代码,它接受一个整数数组($naEUS)并对其进行迭代,在数字之间添加逗号,开始和结束部分除外。最终结果应该是如下所示的字符串:(####,###,##,##,#)

$num=count($naEUS[$f]);
$resultsFields_values=“(”;
对于($b=0;$b<$num;$b++)
{
如果($b=0)
{
$resultsFields_values=substr_replace($resultsFields_values,{$naEUS[$b]}),(strlen($resultsFields_values)),0);
}
$resultsFields_values=substr_replace($resultsFields_values,,{$naEUS[$b]},,(strlen($resultsFields_values)),0);
}
$resultsFields\u values=substr\u replace($resultsFields\u values,“)”,(strlen($resultsFields\u values)),0);
我意识到有很多线程处理字符串连接,但它们只解决了我的部分问题。我知道这是一种非常低效的方法。他们展示了一种更好的方法,但这很容易找到

我真正想知道的是为什么我花了5秒的运行时间才达到30秒的超时


当然,更好的解决方案也是受欢迎的。

使用比较运算符==而不是$b=0。

好吧,这取决于数组的大小,但您在这里所做的是在每次迭代中使用效率相当低的函数重新分配字符串。只要您的数组很小,这可能会很好地工作,但是当它包含数千个项时,执行所需的时间也就不足为奇了

更好的解决方案是使用内爆函数,如下所示:

$resultFields_values = '(' . implode(' , ', $naEUS) . ')';
($b=0;$b<$num;$b++)的

如果($b=0)

使用
$b=0
,您将在每次迭代时将循环重置回零<代码>=用于赋值,
=
用于相等性测试。

好吧。。。这真让人难堪。如果($b=0)。。。如果($b==0),你可以编辑你的帖子,如果你喜欢的话。我更喜欢保持原样,这样有人可以看到发生了什么,并跟踪对话。我相信这不难推断,但你永远不知道。其实我并不感到尴尬,这是一个常见的错误。好主意。这确实是一个常见的错误。我使用了两种语言,它们确实有
=
作为比较运算符,因此我经常出错。:)哈哈,是的,我发了这封信后就知道了。我讨厌这种事发生。我花了一个多小时来研究这个问题。通过发帖,你与这个问题的关系比盯着它看的关系更为密切。在你提到这个问题后,我查了一下。我的方法可行,但这要简单得多。虽然所有的答案都很有帮助,但我选择了这个作为正确的答案,因为最终我使用了内爆。谢谢!我知道区别,但这并不能阻止我时不时地这样做,你知道:/
$resultFields_values = '(' . implode(' , ', $naEUS) . ')';
for( $b = 0; $b < $num; $b++ )
    if( $b = 0 )