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

Bagaimana untuk menukar tatasusunan objek dalam PHP

Apr 23, 2023 am 10:05 AM

Dalam pembangunan PHP, tatasusunan objek biasanya merujuk kepada koleksi objek yang mengandungi atribut dan data yang berbeza Objek ini boleh ditakrifkan sebagai kelas, atau set hasil yang dikembalikan daripada pernyataan pertanyaan pangkalan data. Dalam sesetengah kes, kita perlu menukar tatasusunan objek ini kepada tatasusunan biasa untuk operasi dan penghantaran yang lebih mudah. Artikel ini akan memperkenalkan secara terperinci cara PHP melaksanakan penukaran tatasusunan objek.

1. Tatasusunan objek dalam PHP

Dalam PHP, pelaksanaan tatasusunan objek boleh dipelbagaikan.

  1. Objek tatasusunan

Objek tatasusunan ialah pembolehubah jenis objek yang ditakrifkan sebagai tatasusunan Tiada hubungan kelas antara objek ini. Sebagai contoh, di bawah kita mentakrifkan objek tatasusunan:

$user1 = array(
    'id' => 1,
    'username' => 'user1',
    'email' => 'user1@example.com'
);

$user2 = array(
    'id' => 2,
    'username' => 'user2',
    'email' => 'user2@example.com'
);

$users = array($user1, $user2);
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan dua objek tatasusunan masing-masing $user1 dan $user2, dan menggunakan fungsi tatasusunan() untuk memasukkannya dalam tatasusunan dalam $pengguna.

  1. Objek kelas

Objek kelas ialah objek yang mentakrifkan kelas ini mempunyai hubungan warisan dengan kelas dan boleh menggunakan atribut dan kaedah kelas. Sebagai contoh, di bawah kami mentakrifkan kelas Pengguna dan mencipta beberapa objek kelas ini:

class User {
    public $id;
    public $username;
    public $email;
    
    public function __construct($id, $username, $email) {
        $this->id = $id;
        $this->username = $username;
        $this->email = $email;
    }
}

$user1 = new User(1, 'user1', 'user1@example.com');
$user2 = new User(2, 'user2', 'user2@example.com');
$users = array($user1, $user2);
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan kelas Pengguna dan menggunakan fungsi __construct() untuk mencipta $ user1 dan $user2 ialah dua objek kelas ini, dan gunakan fungsi array() untuk memasukkannya dalam array $users.

  1. Objek set hasil pangkalan data

Objek set hasil pangkalan data ialah hasil data yang diperoleh daripada pangkalan data menggunakan pernyataan pertanyaan Hasilnya ialah tatasusunan objek yang serupa. Sebagai contoh, di bawah kami menggunakan kaedah mysqli untuk menanyakan pangkalan data dan mendapatkan objek set hasil:

$conn = new mysqli($servername, $username, $password, $dbname);

$sql = "SELECT * FROM users";
$result = $conn->query($sql);

$users = array();
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $user = new User($row["id"], $row["username"], $row["email"]);
        array_push($users, $user);
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan kaedah mysqli untuk menanyakan pangkalan data dan menetapkan objek set hasil yang dikembalikan kepada $ hasil pembolehubah, dan kemudian kami menggunakan gelung sementara untuk menukar hasil pertanyaan kepada tatasusunan objek kelas Pengguna.

2. Tukar tatasusunan objek kepada tatasusunan biasa

Dalam sesetengah kes, kita perlu menukar tatasusunan objek kepada tatasusunan biasa untuk memudahkan operasi dan penghantaran. PHP datang dengan banyak fungsi untuk melaksanakan proses ini, kami akan memperkenalkannya satu persatu.

  1. Gunakan fungsi json_encode untuk menukar

Fungsi json_encode ialah fungsi yang disertakan dengan PHP, yang boleh menukar jenis data seperti tatasusunan dan objek kepada data format JSON. Di sini, kita boleh mendapatkan tatasusunan biasa yang kami inginkan dengan menukar tatasusunan objek kepada data format JSON, dan kemudian menukar data JSON kepada tatasusunan. Berikut ialah contoh:

$json_users = json_encode($users);  //将对象数组转换为JSON格式数据
$users_arr = json_decode($json_users, true);  //将JSON格式数据转换为数组
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi json_encode untuk menukar tatasusunan objek $users kepada data format JSON dan menetapkannya kepada pembolehubah $json_users. Seterusnya, kami menggunakan fungsi json_decode untuk menukar data format JSON dalam pembolehubah $json_users kepada tatasusunan bersekutu dan menetapkannya kepada pembolehubah $users_arr. Dengan cara ini, pembolehubah $users_arr memegang bentuk tatasusunan biasa tatasusunan objek $users.

  1. Gunakan penukaran gelung foreach

Gelung foreach boleh membantu kami mengendalikan setiap elemen dalam tatasusunan dan ia juga boleh membantu kami menukar tatasusunan objek kepada tatasusunan biasa .

$users_arr = array();
foreach($users as $user) {
    $user_arr = array(
        'id' => $user->id,
        'username' => $user->username,
        'email' => $user->email
    );
    array_push($users_arr, $user_arr);
}
Salin selepas log masuk

Dalam kod di atas, kami merentasi setiap elemen dalam tatasusunan objek $users melalui gelung foreach, menyimpan atribut dan datanya dalam tatasusunan bersekutu $user_arr, dan menggunakan fungsi array_push untuk menolak setiap elemen Tatasusunan $user_arr ditambahkan pada tatasusunan $users_arr. Akhirnya, tatasusunan $users_arr ialah tatasusunan biasa yang mengandungi semua data dalam tatasusunan objek $users.

  1. Gunakan fungsi array_map untuk menukar

Fungsi array_map ialah fungsi yang disertakan dengan PHP Ia akan menggunakan fungsi yang ditentukan pada setiap elemen tatasusunan dan mengembalikan a tatasusunan baharu. Berikut ialah contoh:

function obj_to_arr($obj) {
    $result = array();
    foreach ($obj as $key => $val) {
        if (is_object($val)) {
            $result[$key] = obj_to_arr($val);
        } else {
            $result[$key] = $val;
        }
    }
    return $result;
}

$users_arr = array_map('obj_to_arr', $users);
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mentakrifkan fungsi obj_to_arr untuk menukar objek kepada tatasusunan. Fungsi ini menggunakan objek yang ditentukan untuk setiap elemen dalam tatasusunan dan mengembalikan tatasusunan baharu. Akhir sekali, kami menggunakan fungsi array_map untuk menggunakan fungsi obj_to_arr pada setiap elemen dalam tatasusunan objek $users dan berikan hasilnya kepada tatasusunan $users_arr.

3. Ringkasan

Dalam pembangunan PHP, tatasusunan objek ialah salah satu jenis data biasa, dan pemprosesan serta pengendaliannya merupakan bahagian yang amat diperlukan dalam proses pembangunan. Dalam artikel ini, kami memperkenalkan secara terperinci cara mentakrif tatasusunan objek dalam PHP dan menyediakan tiga cara untuk menukarnya kepada tatasusunan biasa. Kaedah di atas adalah sangat mudah dan mudah difahami, dan saya harap ia dapat membantu pembangun PHP.

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

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah amalan terbaik untuk deduplikasi tatasusunan php Apakah amalan terbaik untuk deduplikasi tatasusunan php Mar 03, 2025 pm 04:41 PM

Apakah amalan terbaik untuk deduplikasi tatasusunan php

Bolehkah PHP Array Deduplication memanfaatkan keunikan nama utama? Bolehkah PHP Array Deduplication memanfaatkan keunikan nama utama? Mar 03, 2025 pm 04:51 PM

Bolehkah PHP Array Deduplication memanfaatkan keunikan nama utama?

Apakah piawaian pengekodan PHP terkini dan amalan terbaik? Apakah piawaian pengekodan PHP terkini dan amalan terbaik? Mar 10, 2025 pm 06:16 PM

Apakah piawaian pengekodan PHP terkini dan amalan terbaik?

Bagaimana saya bekerja dengan sambungan php dan pecl? Bagaimana saya bekerja dengan sambungan php dan pecl? Mar 10, 2025 pm 06:12 PM

Bagaimana saya bekerja dengan sambungan php dan pecl?

Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP? Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP? Mar 10, 2025 pm 06:15 PM

Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP?

Apakah teknik pengoptimuman untuk deduplikasi tatasusunan php Apakah teknik pengoptimuman untuk deduplikasi tatasusunan php Mar 03, 2025 pm 04:50 PM

Apakah teknik pengoptimuman untuk deduplikasi tatasusunan php

Adakah Deduplication Array PHP perlu dipertimbangkan untuk kerugian prestasi? Adakah Deduplication Array PHP perlu dipertimbangkan untuk kerugian prestasi? Mar 03, 2025 pm 04:47 PM

Adakah Deduplication Array PHP perlu dipertimbangkan untuk kerugian prestasi?

Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP? Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP? Mar 10, 2025 pm 06:12 PM

Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP?

See all articles