PHPでオブジェクトの配列をコピーする方法

PHPz
リリース: 2023-04-23 17:01:20
オリジナル
829 人が閲覧しました

PHP では、オブジェクト配列のコピーはさまざまな方法で実行できますが、この記事ではよく使用される 3 つの方法を紹介します。

  1. 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 つずつコピーし、新しいアレイ。この方法は非常に効果的ですが、コピーする必要がある配列に多数のオブジェクトが含まれている場合、システム リソースを大量に消費し、プログラムのパフォーマンスに影響を与えます。

  1. シリアル化と逆シリアル化の使用

PHP では、 serialize() 関数を使用してオブジェクト配列を string にシリアル化し、 unserialize() 関数は、文字列を新しいオブジェクト配列に逆シリアル化します。この方法は比較的少ないリソースを必要とするため、オブジェクトの大規模な配列をコピーするのに適しています。

$originalArray = array(new MyClass(), new MyClass(), new MyClass());
$copyArray = unserialize(serialize($originalArray));
ログイン後にコピー

この例では、まず serialize() 関数を使用してオブジェクト配列を文字列にシリアル化し、次に unserialize() 関数を使用して逆シリアル化します。文字列を新しいオブジェクト配列に格納します。

serialize() 関数によってシリアル化された文字列にはオブジェクトの状態情報が含まれるため、オブジェクトのプロパティやメソッドがシリアル化されていないことを確認する必要があることに注意してください。リソースとして、またはクロージャとして。そうしないと、シリアル化および逆シリアル化中に問題が発生する可能性があります。

  1. 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!