2012-06-17 4 views
6

CSVデータを結合配列に解析するWeb APIクライアントをPHPでプログラミングしています。これらの配列を使用しているときにデータ複製からユーザーを保護したいと思います。コピーオンライトはアレイ上のデータ複製を防止しますか?

ユーザーはこれらのアレイに書き込みを行うことはありません(理論的には実際には意味がありません)。

私のユーザがこれらの配列をメソッドの引数として渡すと、PHPのコピーライトメカニズムによってデータの重複が防止されるか、配列への参照を明示的に受け入れないメソッド配列の完全なコピーを受け取りますか?

答えて

9

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

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

さらに、ここでthis answerはコピーオンライトについて詳しく説明しています。

1

変更しないと、配列はコピーされません。

+1

ご質問ありがとうございます。時間があれば、もう少し詳しく説明すると大変感謝しています。受信配列はポインタで動作しますか?あるいは、あなたの答えを裏付ける多くの情報へのリンクを提供できますか? – thwd

関連する問題