PHP は優れたバックエンド言語として継続的に人気があり、その適用範囲はますます広範囲になってきています。PHP のオブジェクト配列は非常に一般的なデータ型です。実際の開発では、多くの場合、オブジェクト配列を次のようにする必要があります。割り当てまたはコピーされます。この記事では、PHP 開発者がオブジェクト配列をより適切に処理できるようにするために、PHP でオブジェクト配列をコピーする方法を紹介します。
1. オブジェクト配列の定義
オブジェクト配列は、オブジェクトを配列に格納するデータ型です。 PHP では、オブジェクトは単一のインスタンスまたはクラスのインスタンスになります。オブジェクトを配列に入れると、複数のオブジェクトを保存および操作するという目的を達成でき、複雑なデータ構造を処理する場合に非常に便利です。
2. オブジェクト配列のコピー
PHP では、オブジェクト配列をコピーする方法として、浅いコピーと深いコピーという 2 つの方法があります。
1. 浅いコピー
浅いコピーとは、新しい配列と元の配列が同じオブジェクトを参照するようにオブジェクト配列をコピーすることです。これは、いずれかの配列でオブジェクトが変更されると、もう一方の配列の対応するオブジェクトも変更されることを意味します。浅いコピーの構文は次のとおりです。
$new_array = $original_array;
上記のコードを使用して、オブジェクト配列を別の配列に割り当てます。
2. ディープコピー
ディープコピーとはオブジェクト配列をコピーすることで、その中に含まれるすべてのオブジェクトが新規に作成されます。これは、いずれかの配列内のオブジェクトを変更しても、他の配列内の対応するオブジェクトは影響を受けないことを意味します。ディープ コピーの構文は次のとおりです。
$new_array = unserialize(serialize($original_array));
元の配列をシリアル化し、新しい配列に再シリアル化することによって、すべてのオブジェクトのディープ コピーを実現できます。このとき、2 つの配列は完全に独立しています。
3. オブジェクト配列の例
以下は簡単なオブジェクト配列の例です:
class Fruit { public $name; public $color; public function __construct($name, $color) { $this->name = $name; $this->color = $color; } } $fruits = array( new Fruit('apple', 'red'), new Fruit('banana', 'yellow') );
シャロー コピー テクノロジを使用して、$fruits 配列を $new_fruits に割り当てることができます。配列中:
$new_fruits = $fruits;
次に、オブジェクトの 1 つを変更して、何が起こるか見てみましょう:
$new_fruits[0]->name = 'orange'; echo $fruits[0]->name; //输出orange echo $new_fruits[0]->name; //输出orange
浅いコピーのため、$new_fruits 配列と $fruits 配列は同じオブジェクトを指しているため、一方を変更すると、もう一方に影響を与えます。
次に、ディープ コピー テクノロジを使用します:
$new_fruits = unserialize(serialize($fruits));
オブジェクトを変更します:
$new_fruits[0]->name = 'orange'; echo $fruits[0]->name; //输出apple echo $new_fruits[0]->name; //输出orange
ディープ コピーにより、2 つの配列内のオブジェクトは独立しているため、一方を変更しても影響はありません別の。
4. 概要
PHP におけるオブジェクト配列は、複数のオブジェクトを簡単に保存および操作できる非常に実用的なデータ型です。オブジェクト配列をコピーするときは、浅いコピーまたは深いコピーを使用できます。浅いコピーでは、新しい配列は元の配列と同じオブジェクトを参照しますが、深いコピーではすべてのオブジェクトがコピーされ、まったく新しい配列が作成されます。この記事が PHP 開発者に少しでも役立つことを願っています。
以上がPHPでオブジェクト配列をコピーする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。