PHP で 2 つのオブジェクトをマージするにはどうすればよいですか? (コード例)

青灯夜游
リリース: 2023-04-05 15:14:02
オリジナル
11766 人が閲覧しました

PHP で、同じクラスの 2 つのオブジェクトが与えられた場合、その 2 つのオブジェクトを 1 つのオブジェクトにマージするにはどうすればよいでしょうか?以下の記事ではPHPで2つのオブジェクトを結合する方法を紹介しますので、ご参考になれば幸いです。 [ビデオチュートリアルの推奨: PHP チュートリアル]

PHP で 2 つのオブジェクトをマージするにはどうすればよいですか? (コード例)

方法 1: 最初にオブジェクトをデータ配列に変換し、次に使用しますarray_merge( ) 関数を使用してマージし、最後にマージされたデータを stdClass オブジェクトに変換します。

注: array_merge() を使用してオブジェクトを結合すると、引数 1 の配列要素は引数 2 の配列要素によって上書きされます。 argument2 の配列に null 値がある場合、最終オブジェクト内の結果の要素が無効になる可能性があります。

例:

<?php 
class demo { 
    // 空类
} 
  
$objectA = new demo(); 
$objectA->a = 1; 
$objectA->b = 2; 
$objectA->d = 3; 
  
$objectB = new demo(); 
$objectB->d = 4; 
$objectB->e = 5; 
$objectB->f = 6; 
  
$obj_merged = (object) array_merge( 
        (array) $objectA, (array) $objectB); 
          
var_dump($obj_merged); 
  
?>
ログイン後にコピー

出力:

PHP で 2 つのオブジェクトをマージするにはどうすればよいですか? (コード例)

方法 2:元のクラスの新しいオブジェクトを作成し、 use foreach ループは、両方のオブジェクトのすべてのプロパティをこの新しいオブジェクトに割り当てます。

説明: これは 2 つのオブジェクトをマージするシンプルでクリーンな方法です。

例:

<?php 
class demo { 
    // 空类
} 
$objectA = new demo(); 
$objectA->A = 1; 
$objectA->B = 2; 
$objectA->C = 3; 
$objectA->D = 4; 
$objectA->E = 5; 
$objectB = new demo(); 
$objectB->D = 6; 
$objectB->E = 7; 
$objectB->F = 8; 
  
// 用于转换给定对象类的函数
function convertObjectClass($objectA, $objectB, $final_class) { 
  
    $new_object = new $final_class(); 
  
    // 初始化类属性
    foreach($objectA as $property => $value) { 
        $new_object->$property = $value; 
    } 
      
    foreach($objectB as $property => $value) { 
        $new_object->$property = $value; 
    } 
  
    return $new_object; 
} 
  
$obj_merged = convertObjectClass($objectA,$objectB, &#39;demo&#39;); 
          
var_dump($obj_merged); 
  
?>
ログイン後にコピー

出力:

PHP で 2 つのオブジェクトをマージするにはどうすればよいですか? (コード例)

上記はこの記事の全内容です。皆様のお役に立てば幸いです。学ぶ 。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !

以上がPHP で 2 つのオブジェクトをマージするにはどうすればよいですか? (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート