Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menukar objek kepada array dalam php

Bagaimana untuk menukar objek kepada array dalam php

PHPz
PHPzasal
2023-04-20 10:10:272870semak imbas

Menukar objek PHP kepada tatasusunan adalah salah satu masalah yang sering dihadapi oleh ramai pengaturcara semasa pembangunan. Objek dan tatasusunan adalah kedua-dua jenis data yang biasa digunakan dalam PHP, tetapi ia berbeza. Objek ialah jenis data kompleks yang mewakili contoh kelas, manakala tatasusunan ialah koleksi tertib yang mengandungi berbilang skalar, tatasusunan, objek dan elemen lain. Bagaimana untuk menukar objek kepada array? Artikel ini akan memperkenalkan beberapa kaedah.

Kaedah 1: Gunakan penukaran jenis paksa

Anda boleh menggunakan penukaran jenis paksa untuk menukar objek kepada tatasusunan. Semasa menghantar, hantar objek ke tatasusunan dan gunakan (tatasusunan) untuk menghantar objek ke tatasusunan. Contohnya:

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

Hasil output ialah:

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

Kaedah ini mudah dan berkesan, tetapi perlu diingatkan bahawa sesetengah atribut mungkin hilang semasa melakukan penukaran cast , kerana cast akan membuang harta bukan awam (peribadi dan dilindungi) dalam objek.

Kaedah 2: Gunakan kaedah objek

Jika anda ingin menukar sifat bukan awam dalam objek kepada tatasusunan, anda boleh menggunakan kaedah objek get_object_vars() untuk mencapai ini. get_object_vars() mengembalikan tatasusunan yang mengandungi atribut objek dan nilainya. Contohnya:

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

Hasil output ialah:

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

Dengan menggunakan kaedah get_object_vars(), objek boleh ditukar kepada tatasusunan sambil mengekalkan atribut peribadi dalam objek .

Kaedah 3: Penukaran rekursif

Kaedah rekursif menukar objek dan tatasusunan kepada tatasusunan secara rekursif. Kaedah ini menukar objek kepada tatasusunan dalam sebarang situasi, termasuk apabila bersarang dalam objek atau tatasusunan lain. Berikut ialah contoh penukaran rekursif:

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

Outputnya ialah:

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

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

        )

)

Seperti yang dinyatakan di atas, kaedah rekursif sangat berguna untuk data dalam tatasusunan bersarang dan struktur objek .

Kaedah 4: Gunakan json_decode() dan json_encode()

Kaedah terakhir ialah menggunakan fungsi json_decode() dan json_encode(). Kodkan objek ke dalam rentetan format JSON dan nyahkodkannya ke dalam tatasusunan menggunakan json_decode(). Pendekatan ini juga berfungsi dengan tatasusunan dan objek bersarang. Contohnya:

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

Outputnya ialah:

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

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

        )

)

Walaupun json_decode() dan json_encode() boleh menukar objek PHP kepada tatasusunan dengan mudah, mereka tidak boleh menukar sifat peribadi ialah tatasusunan.

Artikel ini memperkenalkan empat kaedah berbeza untuk menukar objek kepada tatasusunan. Dalam pembangunan sebenar, kaedah yang paling sesuai harus dipilih berdasarkan situasi sebenar.

Atas ialah kandungan terperinci Bagaimana untuk menukar objek kepada array dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn