11

CSV データを連想配列に解析する Web API クライアントを PHP でプログラミングしています。これらの配列を使用するときにユーザーをデータの重複から保護したいと考えています。

ユーザーがこれらの配列に書き込むことはありません (理論的には可能ですが、実際には意味がありません)。

ここで私の質問は...ユーザーがこれらの配列を引数としてメソッドに渡す場合、PHPのコピーオンライトメカニズムはデータの重複を防ぐか、配列への参照を明示的に受け入れないメソッドは完全なコピーを受け取りますか?配列の?

4

2 に答える 2

14

名前が示すように、コピーオンライトは、何かが書き込まれるまで変数がコピーされないことを意味します。渡された変数で1バイトが変更されない限り、PHPは、このメカニズムのおかげで、明示的な参照を使用することなく、不要な重複を自動的に回避します。

この記事では、これがPHPのソースコードにどのように実装されているかを詳しく説明します。記事が示唆しているように、xdebugを使用すると、関数xdebug_debug_zvalで変数が複製されていないことを簡単に確認できます。

さらに、ここでのSOに関するこの回答には、コピーオンライトに関する詳細があります。

于 2012-06-17T22:18:52.617 に答える
2

それらを変更しない場合、配列はコピーされません。

于 2012-06-17T21:35:43.027 に答える