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

So konvertieren Sie ein Objekt in ein Array in PHP

PHPz
PHPzOriginal
2023-04-20 10:10:272898Durchsuche

Die Konvertierung von PHP-Objekten in Arrays ist eines der Probleme, auf die viele Programmierer während der Entwicklung häufig stoßen. Objekte und Arrays sind in PHP häufig verwendete Datentypen, sie unterscheiden sich jedoch. Ein Objekt ist ein komplexer Datentyp, der eine Instanz einer Klasse darstellt, während ein Array eine geordnete Sammlung ist, die mehrere Skalare, Arrays, Objekte und andere Elemente enthält. Wie konvertiere ich ein Objekt in ein Array? In diesem Artikel werden verschiedene Methoden vorgestellt.

Methode 1: Cast verwenden

Sie können Cast verwenden, um ein Objekt in ein Array umzuwandeln. Übergeben Sie beim Umwandeln das Objekt an ein Array und verwenden Sie (array), um das Objekt in ein Array umzuwandeln. Beispiel:

class Student{
    public $name;
    public $age;
}
$stu = new Student();
$stu->name = "Tom";
$stu->age = 18;
$arr = (array)$stu;
print_r($arr);

Das Ausgabeergebnis lautet:

Array
(
    [name] => Tom
    [age] => 18
)

Diese Methode ist einfach und effektiv, es ist jedoch zu beachten, dass bei der Umwandlung des Umwandlungstyps möglicherweise einige Attribute verloren gehen, da durch die Umwandlung des Umwandlungstyps nicht öffentliche Eigenschaften in entfernt werden Objekt. Eigenschaften (privat und geschützt) werden verworfen.

Methode 2: Verwenden Sie die Objektmethode

Wenn Sie die nicht öffentlichen Eigenschaften im Objekt in ein Array konvertieren möchten, können Sie dies mit der Objektmethode get_object_vars() erreichen. get_object_vars() gibt ein Array zurück, das die Attribute eines Objekts und ihre Werte enthält. Zum Beispiel:

class Student{
    public $name;
    private $age;
    public function __construct($name, $age){
        $this->name = $name;
        $this->age = $age;
    }
    public function getAge(){
        return $this->age;
    }
}
$stu = new Student("Tom", 18);
$arr = get_object_vars($stu);
$arr['age'] = $stu->getAge();
print_r($arr);

Das Ausgabeergebnis ist:

Array
(
    [name] => Tom
    [age] => 18
)

Mit der Methode get_object_vars() kann das Objekt in ein Array umgewandelt werden, während die privaten Attribute im Objekt erhalten bleiben.

Methode 3: Rekursive Konvertierung

Die rekursive Methode konvertiert Objekte und Arrays rekursiv in Arrays. Diese Methode konvertiert ein Objekt in jeder Situation in ein Array, auch wenn es in anderen Objekten oder Arrays verschachtelt ist. Das Folgende ist ein Beispiel für eine rekursive Konvertierung:

class Student{
    public $name;
    public $age;
    public function __construct($name, $age){
        $this->name = $name;
        $this->age = $age;
    }
}
class Grade{
    public $name;
    public $students;
    public function __construct($name, $students){
        $this->name = $name;
        $this->students = $students;
    }
}
$stu1 = new Student("Tom", 18);
$stu2 = new Student("Jerry", 19);
$grade = new Grade("一年级", [$stu1, $stu2]);

function objectToArray($d) {
    if (is_object($d)) {
        $d = get_object_vars($d);
    }
    if (is_array($d)) {
        return array_map(__FUNCTION__, $d);
    }
    else {
        return $d;
    }
}
$arr = objectToArray($grade);
print_r($arr);

Die Ausgabe lautet:

Array
(
    [name] => 一年级
    [students] => Array
        (
            [0] => Array
                (
                    [name] => Tom
                    [age] => 18
                )

            [1] => Array
                (
                    [name] => Jerry
                    [age] => 19
                )

        )

)

Wie oben erwähnt, ist die rekursive Methode sehr nützlich für Daten in verschachtelten Arrays und Objektstrukturen.

Methode 4: Verwenden Sie json_decode() und json_encode()

Die letzte Methode besteht darin, die Funktionen json_decode() und json_encode() zu verwenden. Codieren Sie das Objekt in eine JSON-Formatzeichenfolge und decodieren Sie es mit json_decode() in ein Array. Dieser Ansatz funktioniert auch mit verschachtelten Arrays und Objekten. Zum Beispiel:

class Student{
    public $name;
    public $age;
    public function __construct($name, $age){
        $this->name = $name;
        $this->age = $age;
    }
}
class Grade{
    public $name;
    public $students;
    public function __construct($name, $students){
        $this->name = $name;
        $this->students = $students;
    }
}
$stu1 = new Student("Tom", 18);
$stu2 = new Student("Jerry", 19);
$grade = new Grade("一年级", [$stu1, $stu2]);

$json = json_encode($grade);
$arr = json_decode($json, true);
print_r($arr);

Die Ausgabe lautet:

Array
(
    [name] => 一年级
    [students] => Array
        (
            [0] => Array
                (
                    [name] => Tom
                    [age] => 18
                )

            [1] => Array
                (
                    [name] => Jerry
                    [age] => 19
                )

        )

)

Obwohl json_decode() und json_encode() PHP-Objekte problemlos in Arrays konvertieren können, können sie private Eigenschaften nicht in Arrays konvertieren.

In diesem Artikel werden vier verschiedene Methoden zum Konvertieren von Objekten in Arrays vorgestellt. In der tatsächlichen Entwicklung sollte die am besten geeignete Methode basierend auf der tatsächlichen Situation ausgewählt werden.

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

Stellungnahme:
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