Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar objek ke dalam array dalam php

Bagaimana untuk menukar objek ke dalam array dalam php

PHPz
PHPzasal
2023-04-23 09:10:46704semak imbas

Dalam PHP, objek dan tatasusunan ialah dua jenis data yang berbeza. Walau bagaimanapun, dalam beberapa kes, kita perlu menukar objek kepada tatasusunan untuk operasi lain. Dalam artikel ini, kami akan meneroka cara menukar objek kepada tatasusunan dalam PHP.

1. Kaedah asal dalam PHP

PHP menyediakan fungsi get_object_vars() untuk mengembalikan atribut objek. Fungsi ini akan mengembalikan tatasusunan bersekutu, kunci tatasusunan ialah nama harta objek, dan nilai tatasusunan ialah nilai sifat. Berikut ialah kod sampel:

class myClass {
  public $name = 'Jenny';
  private $age = 25;
}

$obj = new myClass();
$array = get_object_vars($obj);
print_r($array);

Output:

Array
(
  [name] => Jenny
)

Dengan kaedah ini, kita boleh mendapatkan sifat awam sesuatu objek, tetapi kita tidak boleh mendapatkannya jika ia peribadi hartanah. Jadi jika kita ingin mendapatkan semua sifat sesuatu objek, kita perlu menukar definisi kelas kepada bentuk berikut:

class myClass {
  public $name = 'Jenny';
  private $age = 25;

  public function toArray() {
    return get_object_vars($this);
  }
}

$obj = new myClass();
$array = $obj->toArray();
print_r($array);

Output:

Array
(
  [name] => Jenny
  [age] => 25
)

Dengan kaedah ini, kita boleh mendapatkan Semua sifat objek, termasuk sifat peribadi.

2. Gunakan kaedah bersiri dan penyahsirilan

Cara lain untuk menukar objek kepada tatasusunan ialah menggunakan fungsi pensirilan dan penyahserilan PHP. Fungsi bersiri menyerikan objek menjadi rentetan, manakala fungsi unserialize menukar rentetan kembali menjadi objek. Dengan cara ini kita boleh menukar objek kepada tatasusunan.

Berikut ialah kod sampel:

class myClass {
  public $name = 'Jenny';
  private $age = 25;
}

$obj = new myClass();
$serialize = serialize($obj);
$array = unserialize($serialize);
print_r($array);

Output:

myClass Object
(
  [name] => Jenny
  [age:myClass:private] => 25
)

Kita dapat melihat bahawa kaedah ini menukar objek kepada tatasusunan yang mengandungi maklumat objek . Jika kita hanya memerlukan nilai harta objek, pemprosesan lanjut tatasusunan diperlukan. Berikut ialah kod sampel yang diubah suai:

class myClass {
  public $name = 'Jenny';
  private $age = 25;

  public function toArray() {
    $serialized = serialize($this);
    $array = unserialize($serialized);
    return get_object_vars($array);
  }
}

$obj = new myClass();
$array = $obj->toArray();
print_r($array);

Output:

Array
(
  [name] => Jenny
  [age] => 25
)

Dengan kaedah ini, kita boleh menukar objek kepada tatasusunan dengan cepat dan mendapatkan nilai atribut objek.

3. Gunakan kaedah json_encode dan json_decode

Cara lain untuk menukar objek kepada tatasusunan ialah menggunakan kaedah json_encode dan json_decode dalam PHP. json_encode menukarkan objek ke dalam format JSON, manakala json_decode menukar kembali rentetan berformat JSON kepada tatasusunan.

Berikut ialah kod sampel:

class myClass {
  public $name = 'Jenny';
  private $age = 25;
}

$obj = new myClass();
$json = json_encode($obj);
$array = json_decode($json, true);
print_r($array);

Output:

Array
(
  [name] => Jenny
  [age] => 25
)

Kita dapat melihat bahawa kaedah ini menukar objek kepada tatasusunan dengan cepat dan Mendapatkan nilai atribut objek.

Ringkasnya, kami telah memperkenalkan beberapa kaedah untuk menukar objek dalam PHP kepada tatasusunan. Setiap kaedah ini mempunyai kelebihan dan kekurangannya sendiri, dan memilih kaedah yang sesuai bergantung pada senario aplikasi tertentu. Tidak kira kaedah yang anda gunakan, anda perlu mempunyai pemahaman yang mendalam tentang perbezaan antara objek PHP dan tatasusunan untuk melaksanakan logik kod anda dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk menukar objek ke dalam 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