2009-06-24 5 views
0

2つのうちどれがパフォーマンスが良いですか?

JavaScriptでダグラス・クロックフォードは、大きな文字列を連結して代わりにarray.pushを使用するとstr + =を使用すべきではないと聞きました。

開発者が$ str。=を使用してPHPで大きな文字列を連結するコードはたくさんありましたが、PHPの「すべて」は配列に基づいているため(オブジェクトをダンプしようとしました)同じルールがPHPに適用されます。

誰でもこれを確認できますか?

+2

"すべては" 本当にPHPに基づいて、配列ではありません。配列やオブジェクトを渡すかどうかにかかわらず、var_dump()とprint_r()で同じ書式を使用します。 –

答えて

5

文字列はPHPで変更可能ですので、。=はjavascriptで+ =を使用した場合と同じ効果がPHPではありません。つまり、演算子を使用するたびに2つの異なる文字列で終わることはありません。

参照:

php String Concatenation, Performance Are php strings immutable?

1

PHPの文字列は実際には配列ではないので(CやJavaScriptのように)、array_push()は文字列に追加するためには機能しません。

+0

これは合意( ''、配列)を必要としますが、次のようにうまくいく: $ arr = array(); array_push($ arr、 "hello"); array_push($ arr、 "world"); エコージョイン( ''、$ arr); これはあなたにこのような文字列を与えます "hello world" –

3

.=は文字列用です。

array_push()は配列用です。

これらはPHPでは同じではありません。どちらか一方を使用するとエラーが発生します。

+0

OPは文字列を配列にプッシュし、配列のjoinメソッドを使用してそれらを単一の文字列に結合する手法を指していました。可変文字列を持たない言語では、各連結の新しい文字列を再割り当てしないので、これはより高速な操作になります。 –

関連する問題