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

Bagaimana untuk menukar objek kepada tatasusunan dalam PHP

PHPz
PHPzasal
2023-04-25 09:19:19469semak imbas

Dalam pengaturcaraan PHP, tatasusunan ialah jenis data yang sangat biasa digunakan. Ia boleh menyimpan satu set data berkaitan dan memudahkan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pada data ini. Kadangkala, kita perlu menukar objek kepada tatasusunan untuk operasi Artikel ini akan memperkenalkan cara menukar objek kepada tatasusunan dalam PHP.

Dalam PHP, objek ialah jenis data yang kompleks yang merupakan contoh yang dibuat daripada kelas. Setiap objek mempunyai sifat dan kaedah tersendiri. Terdapat dua kaedah untuk menukar objek kepada tatasusunan dalam PHP: nama sifat dan iterator yang ditentukan.

1. Gunakan nama atribut yang ditentukan

Jika kita hanya perlu menukar nama dan nilai atribut objek kepada tatasusunan, kita boleh menggunakan kaedah get_object_vars() objek. Kaedah ini mengembalikan tatasusunan bersekutu dengan nama harta sebagai kunci dan nilai harta sebagai nilai. Berikut ialah contoh mudah:

class Person {
  public $name;
  public $age;
  function __construct($name, $age) {
    $this->name = $name;
    $this->age = $age;
  }
}
 
$p = new Person("John", 25);
$arr = get_object_vars($p);
print_r($arr);

Hasil output ialah:

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

Daripada contoh di atas kita dapat melihat bahawa menggunakan kaedah get_object_vars() hanya memerlukan objek sebagai parameter Hanya hantar ke fungsi. Fungsi ini mengembalikan tatasusunan nama dan nilai harta.

Kadangkala, kita perlu mengecualikan atribut tertentu untuk mengelak daripada muncul dalam tatasusunan. Dalam kes ini, anda boleh menggunakan kaedah __sleep() objek. Kaedah ini mengembalikan tatasusunan yang mengandungi nama sifat, tidak termasuk sifat yang tidak diperlukan. Berikut ialah contoh:

class Person {
  public $name;
  public $age;
  public $id;
  function __construct($name, $age, $id) {
    $this->name = $name;
    $this->age = $age;
    $this->id = $id;
  }
  public function __sleep() {
    return array('name', 'age');
  }
}
 
$p = new Person("John", 25, "123456");
$arr = get_object_vars($p);
print_r($arr);

Hasil output ialah:

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

Daripada contoh di atas kita dapat melihat bahawa kaedah __sleep() mengembalikan tatasusunan. Apabila menukar objek kepada tatasusunan, hanya sifat ini dikekalkan.

2. Gunakan iterator

Jika kita memerlukan cara yang lebih fleksibel untuk menukar objek kepada tatasusunan, kita boleh menggunakan iterator. Iterator ialah kelas yang melaksanakan antara muka Iterator. Antara muka ini menentukan kaedah yang diperlukan untuk menukar objek kepada tatasusunan.

Proses menukar objek kepada tatasusunan menggunakan iterator adalah seperti berikut:

  • Buat kelas yang melaksanakan antara muka Iterator
  • Mengembalikan tatasusunan yang mengandungi objek untuk ditukar Nama dan nilai Atribut
  • Panggil fungsi iterator_to_array() untuk menukar iterator kepada tatasusunan

Berikut ialah contoh:

class Person implements Iterator {
  private $position = 0;
  private $data = array(
    'name' => 'John',
    'age' => 25,
    'id' => '123456'
  );
 
  public function current() {
    $key = array_keys($this->data)[$this->position];
    return array($key => $this->data[$key]);
  }
 
  public function key() {
    return $this->position;
  }
 
  public function next() {
    ++$this->position;
  }
 
  public function rewind() {
    $this->position = 0;
  }
 
  public function valid() {
    $keys = array_keys($this->data);
    return isset($keys[$this->position]);
  }
}
 
$p = new Person;
$arr = iterator_to_array($p);

print_r($arr);

Hasil keluarannya ialah:

Array
(
    [0] => Array
        (
            [name] => John
        )

    [1] => Array
        (
            [age] => 25
        )

    [2] => Array
        (
            [id] => 123456
        )

)

Daripada contoh di atas, kita dapat melihat bahawa apabila fungsi iterator_to_array() dipanggil untuk menukar iterator kepada tatasusunan, tatasusunan yang dikembalikan akan terdiri daripada semua nama atribut dan nilai.

Ringkasan: Menukar objek kepada tatasusunan adalah sangat mudah dalam PHP. Kita boleh menggunakan kaedah get_object_vars() atau iterator untuk melaksanakan penukaran. Tidak kira kaedah yang anda gunakan, anda boleh menukar objek kepada jenis data yang mudah untuk dimanipulasi.

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