PHP では、オブジェクト配列のコピーはさまざまな方法で実行できますが、この記事ではよく使用される 3 つの方法を紹介します。
clone
キーワードを使用しますPHP では、オブジェクトとそのプロパティをコピーするには clone
キーワードを使用しますが、オブジェクト配列はコピーされません。オブジェクトの配列をコピーしたい場合は、各オブジェクトを 1 つずつコピーする必要があります。
$originalArray = array(new MyClass(), new MyClass(), new MyClass()); $copyArray = array(); foreach ($originalArray as $obj) { $copyArray[] = clone $obj; }
この例では、まず 3 つの MyClass
オブジェクトを含む配列を作成し、次に foreach
ループを使用して各オブジェクトを 1 つずつコピーし、新しいアレイ。この方法は非常に効果的ですが、コピーする必要がある配列に多数のオブジェクトが含まれている場合、システム リソースを大量に消費し、プログラムのパフォーマンスに影響を与えます。
PHP では、 serialize()
関数を使用してオブジェクト配列を string にシリアル化し、 unserialize()
関数は、文字列を新しいオブジェクト配列に逆シリアル化します。この方法は比較的少ないリソースを必要とするため、オブジェクトの大規模な配列をコピーするのに適しています。
$originalArray = array(new MyClass(), new MyClass(), new MyClass()); $copyArray = unserialize(serialize($originalArray));
この例では、まず serialize()
関数を使用してオブジェクト配列を文字列にシリアル化し、次に unserialize()
関数を使用して逆シリアル化します。文字列を新しいオブジェクト配列に格納します。
serialize()
関数によってシリアル化された文字列にはオブジェクトの状態情報が含まれるため、オブジェクトのプロパティやメソッドがシリアル化されていないことを確認する必要があることに注意してください。リソースとして、またはクロージャとして。そうしないと、シリアル化および逆シリアル化中に問題が発生する可能性があります。
array_map()
関数を使用する PHP では、array_map()
関数を使用して配列を走査し、実行します各要素に対して同じ操作を実行し、新しい配列を返します。この関数を使用して、オブジェクトの配列をコピーできます。
$originalArray = array(new MyClass(), new MyClass(), new MyClass()); $copyArray = array_map(function($obj) { return clone $obj; }, $originalArray);
この例では、array_map()
関数と匿名関数を使用してオブジェクト配列をコピーします。この方法では、リソースを大量に消費することなく、オブジェクト配列のコピーを実現できます。
概要
この記事では、オブジェクトの配列をコピーする 3 つの一般的な方法を紹介しました。clone
キーワードを使用する方法、シリアル化と逆シリアル化を使用する方法、および ## を使用する方法です。 #array_map() 関数。各方法には長所と短所があり、特定のシナリオに応じて適切な方法を選択する必要があります。
以上がPHPでオブジェクトの配列をコピーする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。