Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk menghuraikan objek tatasusunan dalam php

Bagaimana untuk menghuraikan objek tatasusunan dalam php

PHPz
Lepaskan: 2023-04-24 15:36:32
asal
1045 orang telah melayarinya

Tatasusunan dan objek ialah salah satu struktur data yang paling biasa digunakan semasa membangunkan aplikasi web. Sebagai bahasa skrip, PHP sangat mudah untuk mengendalikan tatasusunan dan objek. Walau bagaimanapun, apabila kami menemui data dengan struktur kompleks seperti tatasusunan berbilang dimensi, tatasusunan yang mengandungi objek, objek yang mengandungi tatasusunan, dll., penghuraian PHP memerlukan beberapa kemahiran dan kaedah.

Artikel ini akan memperkenalkan cara PHP menghuraikan data struktur kompleks seperti tatasusunan, objek, objek bersarang dalam tatasusunan dan tatasusunan bersarang dalam objek Ia akan menggambarkan proses penghuraian dan langkah berjaga-jaga melalui beberapa contoh.

  1. Menghuraikan tatasusunan

Tatasusunan dalam PHP boleh dibuat terus menggunakan tatasusunan kata kunci atau melalui simbol []. Penghuraian tatasusunan ringkas adalah sangat mudah Anda boleh mengakses terus elemen dalam tatasusunan melalui subskrip, seperti:

<?php 
$arr = [&#39;apple&#39;, &#39;banana&#39;, &#39;pear&#39;];
echo $arr[0];   //输出apple
echo $arr[1];   //输出banana
echo $arr[2];   //输出pear
?>
Salin selepas log masuk

Walau bagaimanapun, apabila tatasusunan menjadi kompleks dan mengandungi tatasusunan berbilang dimensi, ia tidak. begitu mudah untuk mengakses elemen. Pada ketika ini, kita perlu menggunakan traversal untuk menghuraikan elemen dalam tatasusunan.

<?php 
$arr = [
    &#39;fruit&#39; => [
        'apple' => ['color' => 'red', 'price' => 2],
        'banana' => ['color' => 'yellow', 'price' => 3],
        'pear' => ['color' => 'green', 'price' => 4]
    ]
];

foreach ($arr['fruit'] as $name => $item) {
    echo $name . ':' . $item['color'] . '(' . $item['price'] . '元)<br/>';
}
?>
Salin selepas log masuk

Dalam kod di atas, kami menggunakan gelung foreach untuk melintasi elemen dalam tatasusunan dan mendapatkan warna dan harga setiap buah dalam tatasusunan. Kaedah traversal ini sesuai untuk sebarang struktur tatasusunan berbilang peringkat.

  1. Menghuraikan objek

Dalam PHP, kita boleh menggunakan kelas kata kunci dan baharu untuk mencipta objek. Penghuraian objek mudah adalah sangat mudah dan anda boleh menggunakan pengendali anak panah -> untuk mengakses sifat atau kaedah objek secara langsung.

<?php 
class Person {
    public $name;
    public $age;
    public function sayHello() {
        echo &#39;Hello, I\&#39;m &#39; . $this->name . '.';
    }
}

$p = new Person();
$p->name = 'Jack';
$p->age = 18;
$p->sayHello(); //输出Hello, I'm Jack.
?>
Salin selepas log masuk

Walau bagaimanapun, apabila objek mengandungi tatasusunan dalam atau berbilang objek, mengakses elemen memerlukan kaedah traversal yang lebih kompleks.

Sebagai contoh, kami mencipta objek "watak" Setiap aksara mengandungi tatasusunan "tag" dan objek "rakan" Objek rakan mengandungi dua sifat "nama" dan "maklumat hubungan".

<?php 
class Tag {
    public $name;
    public $value;
}

class Friend {
    public $name;
    public $contact;
}

class Person {
    public $name;
    public $age;
    public $tags = [];
    public $friend;
}
Salin selepas log masuk

Kami mencipta dua objek aksara, setiap satu mengandungi dua tag dan rakan.

$p1 = new Person();
$p1->name = 'Jack';
$p1->age = 18;
$p1->tags[0] = new Tag();
$p1->tags[0]->name = 'sport';
$p1->tags[0]->value = 5;
$p1->tags[1] = new Tag();
$p1->tags[1]->name = 'music';
$p1->tags[1]->value = 3;
$p1->friend = new Friend();
$p1->friend->name = 'Lucas';
$p1->friend->contact = '123456';

$p2 = new Person();
$p2->name = 'Amy';
$p2->age = 20;
$p2->tags[0] = new Tag();
$p2->tags[0]->name = 'reading';
$p2->tags[0]->value = 3;
$p2->tags[1] = new Tag();
$p2->tags[1]->name = 'travel';
$p2->tags[1]->value = 2;
$p2->friend = new Friend();
$p2->friend->name = 'Lily';
$p2->friend->contact = '654321';
Salin selepas log masuk

Seterusnya, kami merentasi semua maklumat setiap aksara dan mengeluarkannya ke halaman.

<?php 
echo &#39;<table border="1">';
echo '<tr><th>Name</th><th>Age</th><th>Tags</th><th>Friend</th></tr>';

foreach ([$p1, $p2] as $person) {
    echo '<tr>';
    echo '<td>' . $person->name . '</td>';
    echo '<td>' . $person->age . '</td>';
    echo '<td>';
    foreach ($person->tags as $tag) {
        echo $tag->name . ':' . $tag->value . '<br/>';
    }
    echo '</td>';
    echo '<td>' . $person->friend->name . '<br/>' . $person->friend->contact . '</td>';
    echo '</tr>';
}
echo '</table>';
?>
Salin selepas log masuk

Dalam kod di atas, kami menggunakan dua gelung foreach, satu untuk melintasi tatasusunan aksara dan satu untuk melintasi tatasusunan label dalam aksara. Pada masa yang sama, kami menggunakan operator anak panah -> untuk mendapatkan dan mengeluarkan maklumat rakan.

  1. Menghuraikan objek dalam tatasusunan

Apabila kita ingin memproses tatasusunan dan setiap elemen dalam tatasusunan ialah objek, kita perlu menggunakan traversal untuk menghuraikan tatasusunan elemen, dan gunakan operator anak panah -> untuk mendapatkan atribut dalam setiap objek.

Sebagai contoh, kami mencipta tatasusunan untuk menyimpan maklumat pelajar Setiap pelajar mempunyai tiga atribut: nama, umur dan pekerjaan.

<?php 
class Student {
    public $name;
    public $age;
    public $job;
}

$arr = [
    new Student(),
    new Student(),
    new Student()
];

$arr[0]->name = 'Lucas';
$arr[0]->age = 18;
$arr[0]->job = 'Student';

$arr[1]->name = 'Lily';
$arr[1]->age = 19;
$arr[1]->job = 'Engineer';

$arr[2]->name = 'Jack';
$arr[2]->age = 20;
$arr[2]->job = 'Teacher';
?>
Salin selepas log masuk

Kami menggunakan gelung foreach untuk melintasi setiap elemen dalam tatasusunan dan menggunakan pengendali anak panah ->

<?php 
foreach ($arr as $item) {
    echo $item->name . '(' . $item->age . ',' . $item->job . ')<br/>';
}
?>
Salin selepas log masuk
  1. Menghuraikan tatasusunan dalam objek

Apabila kita ingin memproses objek dan atribut dalam objek ialah tatasusunan, kita perlu menggunakan traversal untuk menghuraikan Elemen dalam tatasusunan dan gunakan pengendali anak panah ->

Sebagai contoh, kami mencipta objek pelajar Pelajar itu mempunyai nama, umur, pekerjaan dan berbilang alamat. Alamat mengandungi wilayah, bandar, daerah dan daerah, maklumat jalan dan atribut Boolean yang menunjukkan sama ada ia adalah alamat lalai.

<?php 
class Address {
    public $province;
    public $city;
    public $district;
    public $street;
    public $isDefault;
}

class Student {
    public $name;
    public $age;
    public $job;
    public $addresses = [];
}

$p = new Student();
$p->name = 'Lucas';
$p->age = 18;
$p->job = 'Student';

$p->addresses[] = new Address();
$p->addresses[0]->province = '江苏省';
$p->addresses[0]->city = '南京市';
$p->addresses[0]->district = '鼓楼区';
$p->addresses[0]->street = '汉口路1号';
$p->addresses[0]->isDefault = true;

$p->addresses[] = new Address();
$p->addresses[1]->province = '江苏省';
$p->addresses[1]->city = '南京市';
$p->addresses[1]->district = '玄武区';
$p->addresses[1]->street = '北京东路1号';
$p->addresses[1]->isDefault = false;
?>
Salin selepas log masuk

Kami melintasi tatasusunan alamat dalam objek pelajar, menggunakan pengendali anak panah -> untuk mendapatkan atribut lain pelajar dan mengeluarkannya ke halaman.

<?php 
echo $p->name . '(' . $p->age . ',' . $p->job . ')<br/>';
foreach ($p->addresses as $addr) {
    echo $addr->province . $addr->city . $addr->district . $addr->street;
    echo '默认地址:' . ($addr->isDefault ? '是' : '否') . '<br/>';
}
?>
Salin selepas log masuk

Ringkasnya, PHP perlu menggunakan kaedah yang berbeza mengikut situasi sebenar untuk menghuraikan data struktur kompleks seperti tatasusunan, objek, objek bersarang dalam tatasusunan dan tatasusunan bersarang dalam objek, dengan merentasi dan mengakses cara untuk menghuraikan data. Apabila memproses data yang kompleks, kita perlu memilih kaedah penghuraian yang sesuai berdasarkan struktur data dan senario penggunaan.

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