違いはありますか、または次のいずれかが他のものよりも優れています:
$var = '';
...
$var .= 'blah blah';
$var .= $var2;
$var .= 'blah blah';
または
$var = '';
...
$var .= 'blah blah' . $var2 . 'blah blah';
速度の違いはありますか、それともどちらかを選択する理由はありますか?
違いはありますか、または次のいずれかが他のものよりも優れています:
$var = '';
...
$var .= 'blah blah';
$var .= $var2;
$var .= 'blah blah';
または
$var = '';
...
$var .= 'blah blah' . $var2 . 'blah blah';
速度の違いはありますか、それともどちらかを選択する理由はありますか?
PEZとTopbitの両方が正しいです。ここで見たよりも良く見えると思うものを指摘したいだけです。
$var = "line 1 \n";
$var .= "line 2 \n";
対
$var = "line 1 \n"
. "line 2 \n";
結果が1つの文字列$varであることが視覚的に明らかであるため、最初のものよりも2番目のものの方がはるかに好きです。また、次のような愚かなバグを防ぎます。
$var = "line 1 \n";
$var .= "line 2 \n";
$vat .= "line 3 \n";
$var .= "line 4 \n";
文字列をエコーすると、わずかな違いがあります。
echo $var1,$var2,$var3 // comma (echo with multiple arguments)
よりわずかに速い
echo $var1.$var2.$var3 // dot (concat and echo)
いくつかの短い文字列では問題ありません。読みやすいものを使用してください。
しかし、それほど短いものではなく、多数 (たとえば数千) ある場合は、おそらくそれらを配列に保持して、それらを結合することをお勧めします。(たまたま、このようなコードは「.=」を使用して文字列を連結するのと同じくらい読みやすいため、パフォーマンスの祭壇で明快さを犠牲にすることはありません。)
編集:上記の考え方は有効ではないと思います。PHP の文字列は可変ですよね?
違いはありません。どちらも連結なので、読みやすいものを使用する必要があります。
最高のパフォーマンスを求めている場合は、配列を使用してみて、終了したら内破します。
$var = array();
$var[] = "line 1\n";
$var[] = "line 2\n";
$var[] = "line 3";
$var = implode('', $var);
何千もの大きな文字列を扱っていない限り、どのような方法でも速度の違いは無視できます。
コードで手動で連結しているものについては、パフォーマンスはおそらく重要ではないため、読みやすさが重要です。私にとって、これはしばしばヒアドキュメント構文を使用することを意味します。インデント構造を壊す方法は好きではありませんが、改行やタブを文字列に正しく挿入する場合は特に便利です。
大量のデータを単一の文字列に取り込む最も速い方法は、エコーされた出力をキャプチャするための出力バッファリングです。
ob_start();
/* many echos. For example, in a loop */
$outString = ob_get_contents(); // get the complete string
ob_end_clean();
一般に、プログラムの速度に大きな違いが生じる可能性は低いので、後で修正/更新するために戻ってくる必要があるため、何をしているのかを明確にしてください。読みやすさが重要です。
意味のある違いはありません。それは単にコーディングの好みの問題です。
こんなに短い状況では気が付かないと思います。私は通常、読みやすさの理由から、どちらを使用するかを決定します。私は 2 つの状況にのみ分割し、それ以外の場合は 1 行に分割します。
a) 複数行の応答を作成して、コードがユーザーに表示されるものをいくらか模倣するようにします。こうすることで、タイプミスや間違いを見つけやすくなることがわかりました。
$var = "line 1 \n";
$var .= "line 2 \n";
b) 行の長さ。行がウィンドウからはみ出す場合は、通常、行を分割するので、行の最後まで読んで行末に行く必要はありません。ほとんどの言語は行継続文字をサポートしているため、コード内で物理的に改行する必要はありませんが、行継続文字を持たない言語で作業しているため、習慣になっているだけです。