PHP Object to Array Convert menggunakan JSON Decode

oleh Vincy. Terakhir diubah pada 15 September 2021.

Konversi objek ke array PHP memudahkan untuk mengakses data dari kumpulan objek. Sebagian besar objek keluaran API sebagai respons.

Beberapa API mungkin mengembalikan struktur objek yang kompleks. Misalnya, campuran objek dan array yang dibundel dengan respons. Pada saat itu, proses konversi objek ke array akan menyederhanakan penguraian data.

Contoh cepat ini melakukan konversi objek ke array PHP dalam satu langkah. Itu membuat bundel objek dan mengatur properti.

Ini menggunakan fungsi JSON encode() decode() untuk konversi. json_decode() memasok boolean true untuk mendapatkan output array.

Contoh cepat

Konversi objek ke array PHP dalam satu baris menggunakan json_decode


<?php
$object = new StdClass();
$object->id = 5678;
$object->name = "William";
$object->department = "CSE";
$object->designation = "Engineer";

$result = json_encode($object);
// converts object $result to array
$output = json_decode($result, true);

print "<pre>";
print_r($result);
?>

Keluaran

Setelah decoding, array output dicetak ke browser. Tangkapan layar di bawah ini menunjukkan output dari program ini.

objek php ke array

Berbagai cara mengonversi objek PHP ke array

Saat mengonversi objek ke array, pasangan properti objek ‘name:value’ akan membentuk array asosiatif.

Jika suatu objek berisi properti yang belum ditetapkan, maka objek tersebut akan mengembalikan array dengan kunci numerik.

Ada dua cara untuk mencapai konversi objek ke array PHP.

  1. Pengetikan objek ke dalam array.
  2. Encoding dan decoding properti objek ke dalam array elemen.

Typecasting adalah metode langsung untuk mengubah jenis data input. Metode kedua menerapkan json_decode() pada objek yang diberikan. Itu disediakan boolean true sebagai parameter kedua untuk mendapatkan output dalam format array.

Artikel ini menyertakan contoh penggunaan kedua metode di atas untuk melakukan konversi objek ke array.

Objek PHP ke array menggunakan typecasting

Ini adalah metode alternatif untuk mengubah tipe objek menjadi array. Program di bawah ini menggunakan objek input yang sama.

Ini menggantikan decode encode JSON melalui konversi dengan pernyataan typecasting. Outputnya akan sama seperti yang kita lihat di atas.

Sintaks typecasting PHP ditunjukkan di bawah ini. Ini menambahkan tipe data target yang diapit dengan tanda kurung.


$output = (target-data-type) $input

ketik-casting-to-convert-object-to-array.php


<?php
$object = new StdClass();
$object->id = 5678;
$object->name = "William";
$object->department = "CSE";
$object->destination = "Engineer";

print"<pre>";
print_r( (array) $object );
?>

Konversi objek rekursif ke array

Contoh ini menggunakan objek input dengan kedalaman = 3. Ini menambahkan lebih banyak properti pada tingkat bersarang pada kedalaman yang berbeda. Bundel objek hierarkis ditetapkan sebagai input untuk proses konversi.

Program ini mendefinisikan fungsi kustom untuk mengkonversi objek PHP ke array. Ini melakukan konversi secara rekursif pada setiap level objek input.

converting-recursive-object-to-array.php


<?php
$object = new StdClass();
$object->id = 5678;
$object->name = "William";

$object->address = new stdClass();
$object->address->email = "William@gmail.com";

$object->address->billing = new stdClass();
$object->address->billing->zipcode = 9950;

$object->address->shipping = new stdClass();
$object->address->shipping->zipcode = 1234;

$object->address->state = "South Carolina";
$object->address->city = "Columbia";
$object->address->country = "US";

function objectToArray($object)
{
    foreach ($object as $k => $obj) {
        if (is_object($obj)) {
            $object->$k = objectToArray($obj);
        } else {
            $object->$k = $obj;
        }
    }
    return (array) $object;
}

$result = objectToArray($object);

print "<pre>";
print_r($result);
?>

Ini adalah output dari objek PHP rekursif ke program konversi array di atas.

konversi objek rekursif ke array

Ubah objek kelas PHP menjadi array

Contoh ini membangun bundel objek kelas PHP. Konstruktor kelas menetapkan properti objek selama instantiasi.

Kemudian, instance kelas Siswa dikodekan untuk menyiapkan data tipe objek. Fungsi json_encode() mempersiapkan objek JSON untuk menyediakannya untuk decoding. json_decode() mengonversi objek PHP menjadi array.

convert-class-object-into-array.php


<?php
class student
{
    public function __construct($id, $name, $state, $city, $country)
    {
        $this->id = $id;
        $this->name = $name;
        $this->state = $state;
        $this->city = $city;
        $this->country = $country;
    }
}

$student = new student("5678", "William", "South Carolina", "Columbia", "US");
$result = json_encode($student);
$output = json_decode($result, true);
print "<pre>";
print_r($output);
?>

Periksa is_object() sebelum konversi

Ini adalah praktik pemrograman yang baik untuk memeriksa ketersediaan data sebelum diproses. Contoh ini menerapkan verifikasi is_object sebelum mengonversi objek PHP ke array.

Metode ini memverifikasi apakah input adalah objek. PHP menyertakan fungsi eksklusif untuk memverifikasi ketersediaan data dan jenisnya. Contoh isset(), kosong(), is_array() dll.

memeriksa-objek-sebelum-konversi.php


<?php

class student
{

    public function __construct($id, $name, $state, $city, $country)
    {
        $this->id = $id;
        $this->name = $name;
        $this->state = $state;
        $this->city = $city;
        $this->country = $country;
    }
}
$student= new student("5678", "William", "South Carolina", "Columbia", "US");

print "<pre>";
if (is_object($student)) {
    echo "Input Object:" . '<br>';
    $result = json_encode($student);
    print_r($result);
    $studentArray = json_decode($result, true);
}

if(!empty($studentArray) && is_array($studentArray)) {
    echo "<br><br>Output Array:" . '<br>';
    print_r($studentArray);
}
?>

Konversikan Pribadi, Objek kelas yang dilindungi

Program di bawah ini mendefinisikan kelas dengan properti pribadi dan dilindungi. Kode PHP membuat instance kelas dan membuat bundel objek.

Ini menggunakan metode typecasting dan decoding untuk mengubah objek menjadi array.

Saat menggunakan typecasting, indeks array keluaran dari properti pribadi berisi awalan nama kelas. Setelah konversi, indeks array memiliki awalan * untuk properti yang dilindungi.

converting-private-protected-object.php


<?php
class Student
{
    public $name;
    private $id;
    protected $email;
    
    public function __construct()
    {
        $this->name ="William";
        $this->id = 5678;
        $this->email = "william@gmail.com";
    }
}

print "<pre>";
$student = new Student;
$result = json_encode($student);
$output1 = json_decode($result, true);
print "<br/>Using JSON decode:<br/>";
print_r($output1);

$output2 = new Student;
print "<br/><br/>Using Type casting:<br/>";
print_r( (array) $output2 );
?>

Tangkapan layar keluaran ini menunjukkan perbedaan dalam indeks array. Itu dibuat dari properti pribadi dan dilindungi dari instance kelas.

properti yang dilindungi pribadi

Mengakses properti objek dengan tombol numerik

Kode ini mencakup array asosiatif detail siswa. Ini juga berisi nilai dengan tombol numerik.

Saat mengonversi larik ini menjadi objek, kunci larik asosiatif digunakan untuk mengakses nilai properti objek. Ada pengecualian untuk mengakses properti jika tidak memiliki nama.

Kode di bawah ini menunjukkan cara mengakses objek dengan tombol numerik. Kuncinya diapit oleh kurung kurawal untuk mendapatkan nilainya.

masalah-dengan-numerical-keys.php


<?php
$inputArray = array(
    'name' => 'William',
    'email' => 'William@gmail.com',
    'phone' => '12345678',
    'REG5678'
);

$student = (object) array(
    'name' => 'William',
    'email' => 'William@gmail.com',
    'phone' => '12345678',
    'REG5678'
);
echo '<pre>' . print_r($student, true) . '</pre>';
echo '<br />' . $student->name;
echo '<br />' . $student->email;
echo '<br />' . $student->phone;
echo '<br />' . $student->{0};
?>

Kesimpulan

Kita telah melihat berbagai cara untuk mengonversi objek PHP ke array. Typecasting PHP dasar telah mencapai konversi objek kecuali untuk beberapa kasus khusus.

Proses decode encode PHP JSON melakukan konversi dengan satu kode baris. Ia menerima objek kelas dan mengubah propertinya menjadi daftar array.

Fungsi kustom memproses objek rekursif ke konversi array. Ini untuk menangani objek kompleks dengan objek atau array campuran sebagai elemen turunannya.
unduh

Kembali ke Atas


Source link