Maison  >  Article  >  développement back-end  >  Comment convertir un objet en tableau en php

Comment convertir un objet en tableau en php

PHPz
PHPzoriginal
2023-04-24 15:51:11436parcourir

En PHP, les objets et les tableaux sont des types de données très couramment utilisés. Un objet est une structure qui encapsule des propriétés et des méthodes, tandis qu'un tableau est un ensemble ordonné de paires clé-valeur. Dans certains scénarios, nous pouvons avoir besoin de convertir un objet en objet tableau pour faciliter les opérations sur les données.

En PHP, l'opérateur de conversion de type forcé est utilisé pour convertir un objet en tableau. L'opérateur est "()" (crochet). En même temps, on peut ajouter le préfixe "array" à l'intérieur du crochet pour spécifier le. nom de clé du tableau :

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

If Sans spécifier de nom de clé, l'opérateur de conversion utilisera la méthode par défaut pour convertir l'objet en tableau. Plus précisément, chaque attribut d'objet est ajouté au tableau sous forme de paire clé-valeur. est le nom de l'attribut et la valeur clé est la valeur de l'attribut. Si l'objet contient d'autres objets, ces objets seront convertis de manière récursive en tableaux. Le code suivant :

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);

Le résultat de sortie est le suivant :

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
                )

        )

)

Comme vous pouvez le constater, l'objet $company est forcé d'être converti en tableau $array , et contient également Toutes les propriétés de l'objet $company. $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);

输出结果如下:

Array
(
    [name] => David
    [age] => 32
    [profession] => Software Engineer
)

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

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

Dans l'exemple ci-dessus, nous pouvons constater que la conversion de type cast convertit uniquement les propriétés de l'objet en paires clé-valeur du tableau, et les méthodes de l'objet ne seront pas converties. Si nous devons convertir la méthode de l'objet en tableau, nous devons l'implémenter via les méthodes magiques __sleep() et __wakeup() dans la classe. Parmi elles, la méthode __sleep() est utilisée pour enregistrer toutes les propriétés de l'objet dans un tableau, tandis que la méthode __wakeup() est utilisée pour reconvertir le tableau enregistré en un objet. 🎜rrreee🎜Le résultat de sortie est le suivant : 🎜rrreee🎜Vous pouvez constater que le résultat de sortie ne contient que les attributs de l'objet $person et que les méthodes sont ignorées. 🎜🎜Pour résumer, en PHP, en utilisant l'opérateur cast et les méthodes __sleep() et __wakeup(), on peut convertir un objet en objet tableau pour activer plus manipulation flexible des données. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn