Dados dos objetos de la misma clase y la tarea es fusionar ambos objetos en un solo objeto.
Enfoque 1: Convierta el objeto en una array de datos y combínelos usando la función array_merge() y convierta esta array combinada nuevamente en un objeto de clase stdClass .
Nota: Al fusionar los objetos usando array_merge(), los elementos de la array en el argumento 1 se sobrescriben con los elementos de la array en el argumento 2. Esto puede anular los elementos resultantes en el objeto final si la array en argument2 tiene valores nulos.
Nota: Las funciones no se copian con este enfoque. Solo use este enfoque si la clase solo contiene variables.
Ejemplo:
php
<?php // PHP program to merge two objects class Geeks { // Empty class } $objectA = new Geeks(); $objectA->a = 1; $objectA->b = 2; $objectA->d = 3; $objectB = new Geeks(); $objectB->d = 4; $objectB->e = 5; $objectB->f = 6; $obj_merged = (object) array_merge( (array) $objectA, (array) $objectB); print_r($obj_merged); ?>
stdClass Object ( [a] => 1 [b] => 2 [d] => 4 [e] => 5 [f] => 6 )
Enfoque 2: combine el objeto usando el método array_merge() y convierta esta array combinada en un objeto usando la función convertObjectClass. Esta función se usa para convertir el objeto de la clase inicial en datos serializados usando el método serialize() . Deserialice los datos serializados en la instancia de la clase final utilizando el método unserialize() . Con este enfoque, obtenga un objeto de la clase Geeks definida por el usuario en lugar de la clase estándar stdClass .
Ejemplo:
php
<?php // PHP program to merge two objects class Geeks { // Empty class } $objectA = new Geeks(); $objectA->a = 1; $objectA->b = 2; $objectA->d = 3; $objectB = new Geeks(); $objectB->d = 4; $objectB->e = 5; $objectB->f = 6; // Function to convert class of given object function convertObjectClass($array, $final_class) { return unserialize(sprintf( 'O:%d:"%s"%s', strlen($final_class), $final_class, strstr(serialize($array), ':') )); } $obj_merged = convertObjectClass(array_merge( (array) $objectA, (array) $objectB), 'Geeks'); print_r($obj_merged); ?>
Geeks Object ( [a] => 1 [b] => 2 [d] => 4 [e] => 5 [f] => 6 )
Enfoque 3: cree un nuevo objeto de la clase original y asigne todas las propiedades de ambos objetos a este nuevo objeto mediante el bucle foreach. Este es un enfoque simple y limpio de fusionar dos objetos.
Ejemplo:
php
<?php // PHP program to merge two objects class Geeks { // Empty class } $objectA = new Geeks(); $objectA->a = 1; $objectA->b = 2; $objectA->d = 3; $objectB = new Geeks(); $objectB->e = 4; $objectB->f = 5; $objectB->g = 6; // Function to convert class of given object function convertObjectClass($objectA, $objectB, $final_class) { $new_object = new $final_class(); // Initializing class properties 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, 'Geeks'); print_r($obj_merged); ?>
Geeks Object ( [a] => 1 [b] => 2 [d] => 3 [e] => 4 [f] => 5 [g] => 6 )
Publicación traducida automáticamente
Artículo escrito por Harshit Saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA