Heim > Backend-Entwicklung > PHP-Problem > So konvertieren Sie ein Objekt in PHP in ein Array

So konvertieren Sie ein Objekt in PHP in ein Array

PHPz
Freigeben: 2023-04-24 16:03:57
Original
497 Leute haben es durchsucht

In PHP sind Objekte und Arrays sehr häufig verwendete Datentypen. Ein Objekt ist eine Struktur, die Eigenschaften und Methoden kapselt, während ein Array eine geordnete Menge von Schlüssel-Wert-Paaren ist. In einigen Szenarien müssen wir möglicherweise ein Objekt in ein Array-Objekt konvertieren, um Datenoperationen zu erleichtern.

In PHP wird der erzwungene Typkonvertierungsoperator verwendet, um ein Objekt in ein Array umzuwandeln. Der Operator ist „()“ (Klammer). innerhalb der Klammer, um den Array-Schlüssel anzugeben:

$array = (array) $object;        //强制类型转换,使用默认键名
$array = (array)($object);       //同上
$array = (array) $object_arrray; //强制类型转换并指定键名数组
Nach dem Login kopieren

Wenn kein Schlüsselname angegeben ist, verwendet der Umwandlungsoperator die Standardmethode, um das Objekt in ein Array umzuwandeln. Insbesondere wird jede Objekteigenschaft hinzugefügt als Schlüssel-Wert-Paar in das Array eingefügt wird, ist der Schlüsselname der Attributname und der Schlüsselwert der Attributwert. Wenn das Objekt andere Objekte enthält, werden diese Objekte rekursiv in Arrays umgewandelt. Der folgende Code:

class Person
{
    public $name = "David";
    public $age = 32;
    public $profession = "Software Engineer";
}

class Company
{
    public $name = "ABC Company";
    public $employees;
    
    public function __construct() {
        $this->employees = array(
            new Person(),
            new Person(),
            new Person()
        );
    }
}

$company = new Company();
$array = (array)($company);

print_r($array);
Nach dem Login kopieren

Das Ausgabeergebnis ist wie folgt:

Array
(
    [name] => ABC Company
    [employees] => Array
        (
            [0] => Person Object
                (
                    [name] => David
                    [age] => 32
                    [profession] => Software Engineer
                )

            [1] => Person Object
                (
                    [name] => David
                    [age] => 32
                    [profession] => Software Engineer
                )

            [2] => Person Object
                (
                    [name] => David
                    [age] => 32
                    [profession] => Software Engineer
                )

        )

)
Nach dem Login kopieren

Wie Sie sehen können, wird das Objekt $company in ein Array umgewandelt $ array, das auch alle Eigenschaften des $company-Objekts enthält. $company 被强制类型转换成了数组 $array ,同时包含了 $company 对象的所有属性。

在上面的例子中,我们可以发现强制类型转换只是将对象的属性转换成数组的键值对,而对象的方法不会被转换。如果需要将对象的方法也转换成数组,我们需要通过类中的魔术方法 __sleep()__wakeup() 来实现。其中,__sleep() 方法用于将对象的所有属性保存到数组中,而 __wakeup() 方法则用于将保存的数组转换回对象。

class Person
{
    public $name = "David";
    public $age = 32;
    public $profession = "Software Engineer";
    
    public function run() {
        echo "I am running...";
    }
    
    public function sleep() {
        echo "I am sleeping...";
    }
    
    public function __sleep() {
        return array(
            "name",
            "age",
            "profession"
        );
    }
    
    public function __wakeup() {
    }
}

$person = new Person();
$array = (array)($person);

print_r($array);
Nach dem Login kopieren

输出结果如下:

Array
(
    [name] => David
    [age] => 32
    [profession] => Software Engineer
)
Nach dem Login kopieren

可以发现此时输出结果只包含了 $person 对象的属性,而方法被忽略了。

综上,在PHP中,利用强制类型转换操作符和 __sleep()__wakeup()

Im obigen Beispiel können wir feststellen, dass Cast nur die Eigenschaften des Objekts in die Schlüssel-Wert-Paare des Arrays konvertiert und die Methoden des Objekts nicht konvertiert werden. Wenn wir die Methode des Objekts in ein Array konvertieren müssen, müssen wir sie über die magischen Methoden __sleep() und __wakeup() in der Klasse implementieren. Unter anderem wird die Methode __sleep() verwendet, um alle Eigenschaften des Objekts in einem Array zu speichern, während die Methode __wakeup() verwendet wird, um das gespeicherte Array zurück in zu konvertieren ein Objekt. #🎜🎜#rrreee#🎜🎜#Das Ausgabeergebnis ist wie folgt: #🎜🎜#rrreee#🎜🎜#Es kann festgestellt werden, dass das Ausgabeergebnis nur die Attribute des $person-Objekts enthält. und die Methoden werden ignoriert. #🎜🎜##🎜🎜#Zusammenfassend lässt sich sagen, dass wir in PHP mit dem Cast-Operator und den Methoden __sleep() und __wakeup() ein Objekt in konvertieren können Konvertieren Sie es in ein Array-Objekt für eine flexiblere Datenbearbeitung. #🎜🎜#

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie ein Objekt in PHP in ein Array. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage