1

PHP では、多くの文字列操作を頻繁に行っています。文字列のようなプリミティブ型が値渡しされると、パフォーマンスに大きな影響を与えるため、コードを複数の関数に分割しても問題ありませんか。

4

5 に答える 5

7

オブジェクトのみが参照によって渡されます。

ただし、参照に変更することでパフォーマンスが向上するわけではありません。PHP はコピー オン ライトを使用するため、変数を変更した場合にのみコピーが作成されます。

コードを関数に分割しても、その観点からは遅くなりません。関数を呼び出すにはわずかなオーバーヘッドがありますが、10,000 個の関数を呼び出すループでない限り、おそらく気にする必要はありません。

于 2009-07-08T12:42:09.450 に答える
2

オブジェクトは参照によって渡されます。& 演算子で参照渡しを明示的に使用しない限り、他のすべては値によって渡されます。

そうは言っても、PHP は不要なコピーを避けるためにコピーオン ライトも使用します。

于 2009-07-08T12:42:11.383 に答える
1

デフォルトでは、すべてが値で渡されます。参照によって何かを渡したい場合は、そのように明示的に述べる必要があります。

これは、この動作を明示的に示しているphpドキュメントです

于 2009-07-08T12:43:52.663 に答える
1

参照による受け渡しは、実際にはPHPの値による受け渡しよりも低速です。この主張の正しい引用が見つかりません。これは、PHPマニュアルの「リファレンス」セクションのどこかにあります。

于 2009-07-08T12:45:55.910 に答える
1

はい、プリミティブは、参照渡しする関数を明示的に定義する (&パラメーターの前にアンパサンドを使用する) か、引数の前にアンパサンドを使用して関数を呼び出す場合を除き、値によって渡されます。(後者は非推奨です)

詳細については、ドキュメントのこの部分を参照してください。

編集

また、PHP での「オブジェクトは参照によって渡される」という記述は少し単純化されていますが、ほとんどの目的ではそのように考えることができます。ドキュメントのこの章では、違いについて説明します。

于 2009-07-08T12:42:19.917 に答える