2011-07-18 10 views
3

以下私は最近、整数($ naEUS)の配列をとり、それを繰り返しますが、その間にカンマで数字を追加します開始と終了。最終結果はこのようになります文字列でなければならない:(###、###、###、###)タイムアウトを引き起こす文字列連結

$num = count($naEUS[$f]); 
    $resultsFields_values = "("; 
    for($b = 0; $b < $num; $b++) 
    { 
     if($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_values = substr_replace($resultsFields_values, ")" , (strlen($resultsFields_values)), 0); 

私は文字列の連結を扱うスレッドの多くがあります実現が、彼らだけをアドレス私の問題。私はこれがひどく非効率的なやり方であることを知っています。彼らはそれを行う良い方法を示していますが、それは簡単に見つけることができます。それは30秒のタイムアウトだとが、それは私の5秒、実行時のPHPを取った理由は、私が本当に知りたい

です。

もちろん、より良い解決策も歓迎します。

+0

まあ...これは恥ずかしいです。 if($ b = 0)... if($ b == 0) – Joshua

+0

あなたの投稿を編集できます。 – GolezTrol

+0

私はそれをそのまま残して、それを見ている人が何が起こったのかを見ることができ、会話に従うことを好む。推論するのは難しいことではないが、あなたは決して知らないと確信している。 私は実際には当惑していません。それはよくある間違いです。 – Joshua

答えて

1

まあ、それは、配列のサイズに依存しますが、何をここでやっていることは、むしろ非効率的な機能を使用して、すべての反復でその文字列を再割り当てされます。あなたの配列が小さい限り、これはおそらく問題なく動作しますが、数千もの項目が含まれていると、実行に時間がかかることは不思議ではありません。 $b = 0

$resultFields_values = '(' . implode(' , ', $naEUS) . ')'; 
+0

あなたがそれを述べた後、私はそれを見ました。私のやり方はうまくいくが、これはずっと簡単だ。 – Joshua

+1

すべての回答が役に立ちましたが、私は最後に使用したものであるため、これを正しいものとして選択しました。 – Joshua

1

使用比較演算子==の代わりに、$ B = 0

+0

私はこれを投稿した後、私はそれを考え出した。これが起こると私は嫌いです。私は文字通りこれを1時間以上見ました。 – Joshua

+0

投稿することで、あなたはそれを見つめているよりも、問題に対してより健全な関係を得ることができます。 –

2
for($b = 0; $b < $num; $b++) 
    if($b = 0) 

、あなたはすべての繰り返しでゼロに戻るループをリセットしている:

より良い解決策は、このように、破機能を使用することです。 =は割り当てのためのもので、==は同等性のテスト用です。

+0

ありがとう!私はその違いを知っていますが、それは私が今それをやるのをやめさせるわけではありません、そしてあなたは知っています: – Joshua