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

Bagaimana untuk menukar objek kepada array dalam php

PHPz
Lepaskan: 2023-04-20 13:40:38
asal
2885 orang telah melayarinya

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);
Salin selepas log masuk

Hasil output ialah:

Array
(
    [name] => Tom
    [age] => 18
)
Salin selepas log masuk
Salin selepas log masuk

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);
Salin selepas log masuk

Hasil output ialah:

Array
(
    [name] => Tom
    [age] => 18
)
Salin selepas log masuk
Salin selepas log masuk

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);
Salin selepas log masuk

Outputnya ialah:

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

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

        )

)
Salin selepas log masuk
Salin selepas log masuk

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);
Salin selepas log masuk

Outputnya ialah:

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

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

        )

)
Salin selepas log masuk
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan