Menggunakan Iterator SPL, Bahagian 1
mata teras
- Penyesuaian adalah proses umum untuk melintasi senarai nilai dalam pengaturcaraan. Dalam PHP, iterator adalah objek yang melintasi senarai, seperti array, senarai direktori, atau set hasil pangkalan data.
- Perpustakaan PHP standard (SPL) menyediakan sejumlah besar iterator yang menjadikan kod itu lebih cekap dan boleh dibaca. Menggunakan pemalsuan SPL sangat berfaedah apabila berurusan dengan sejumlah besar data atau struktur kompleks di luar tatasusunan mudah.
- ArrayIterator dan RecursiveArrayIterator adalah dua iterator SPL yang digunakan untuk melangkah ke atas tatasusunan. ArrayIterator digunakan untuk tatasusunan satu dimensi, dan recursiveArrayIterator digunakan untuk susunan multidimensi.
- DirectoryIterator dan RecursiveDirectoryIterator adalah Iterator SPL yang digunakan untuk melintasi senarai direktori. DirectoryIterator boleh digunakan untuk melangkah ke atas direktori, manakala RecursiveDirectoryIterator digunakan untuk melintasi direktori secara rekursif.
. Ya, lelaran hanyalah proses melintasi senarai nilai. Iterator adalah objek yang melintasi senarai, yang boleh menjadi array, senarai direktori, atau set hasil pangkalan data. Di bahagian pertama siri ini, saya akan memperkenalkan anda kepada lelaran dan bagaimana untuk memanfaatkan beberapa kelas terbina dalam dalam Perpustakaan PHP Standard (SPL). SPL mengandungi sebilangan besar iterator, menggunakannya dalam kod anda boleh meningkatkan kecekapan kod dan, dalam kebanyakan kes, membuat kod lebih mudah dibaca. foreach
kapan dan mengapa menggunakan iterator spl
Seperti yang anda lihat, objek iterator iterative pada dasarnya sama dengan array berulang, begitu banyak orang ingin tahu sama ada lebih mudah untuk melekat dengan array pada mulanya. Walau bagaimanapun, kelebihan sebenar iterator adalah ketika melintasi sejumlah besar data atau data yang lebih kompleks daripada array mudah. Gelung salinan mana -mana array yang diserahkan kepadanya. Jika anda bekerja pada sejumlah besar data, anda akan menyalinnya setiap kali anda menggunakan array yang besar dalam gelung, yang mungkin tidak diingini. Iterator SPL merangkumi senarai dan mendedahkan penglihatan hanya satu elemen pada satu masa, menjadikannya lebih efisien. Iterator adalah pembinaan yang baik apabila membuat penyedia data, kerana ia membolehkan anda melambatkan pemuatan data. Memuatkan malas di sini hanya mengambil data yang diperlukan apabila diperlukan. Anda juga boleh memanipulasi (penapis, menukar, dan lain -lain) data yang diproses sebelum menjadikannya tersedia kepada pengguna. Walau bagaimanapun, keputusan untuk menggunakan iterator sentiasa mengikut budi bicara anda. Terdapat banyak manfaat untuk iterators, tetapi dalam beberapa kes (seperti set array yang lebih kecil), ia boleh membawa kepada overhead yang tidak perlu. Bila menggunakannya terpulang kepada anda; foreach
foreach
Iterator pertama yang ingin saya perkenalkan kepada anda adalah ArrayIterator. Pembina mengambil array sebagai hujah dan menyediakan kaedah yang boleh digunakan untuk melintasinya. Berikut adalah contoh: output kod di atas adalah: Biasanya, anda akan menggunakan ArrayObject (kelas yang membolehkan anda memproses objek sebagai tatasusunan dalam konteks tertentu) dan bukannya menggunakan ArrayIterator secara langsung. Apabila anda menggunakan gelung Cara yang lebih elegan adalah menggunakan RecursiveArrayIterator: output adalah sama seperti dalam contoh sebelumnya. Perhatikan bahawa anda perlu membuat contoh recursiveIterator di sini dan lulus ke objek RecursiveArrayIterator, jika tidak, anda hanya akan mendapat nilai dalam array akar (dan banyak pemberitahuan yang dihasilkan berdasarkan tetapan anda). Apabila bekerja dengan tatasusunan pelbagai dimensi, anda harus menggunakan RecursiveArrayIterator kerana ia membolehkan anda meleleh melalui entri semasa, tetapi ia bergantung kepada anda melakukannya sendiri. RecursiveIteratorerator adalah penghias yang melakukan ini untuk anda. Ia mengambil recursiveArrayIterator, melangkah ke atasnya dan melangkah ke atas mana -mana penyertaan yang boleh didapati (dan sebagainya). Pada asasnya, ia "flat" recursiveArrayIterator. Anda boleh mendapatkan kedalaman lelaran semasa untuk menjejaki dengan memanggil recursiveIteratorerator :: getDepth (). Walau bagaimanapun, jika anda ingin mengembalikan objek, berhati -hati untuk menggunakan RecursiveArrayIterator dan RecursiveIteratorerator; Senarai direktori iTeration
Anda pasti perlu melangkah ke atas direktori dan failnya pada satu ketika dan anda boleh melakukan ini menggunakan fungsi terbina dalam yang disediakan oleh PHP (seperti atau
Gunakan banyak kaedah lain seperti DirectoryIterator :: iSdot (), DirectoryIterator :: GetType (), dan DirectoryIterator :: GetSize (), hampir semua keperluan maklumat direktori asas anda. Anda juga boleh menggabungkan direktori dengan penapis atau regexiterator untuk mengembalikan fail yang sepadan dengan keadaan tertentu. Contohnya:
Ringkasan
gambar dari Mushakesa / Shutterstock
Apa yang dimaksudkan dalam PHP dan mengapa ia penting? Bagaimana menggunakan Iterator SPL dalam PHP? untuk bergerak ke item seterusnya, dan gunakan kaedah anda boleh menapis data dengan menggunakan kelas penapis. Kelas ini membolehkan anda menentukan penapis tersuai yang digunakan untuk setiap item dalam koleksi. Hanya item yang melalui penapis akan dikembalikan oleh Iterator. Anda boleh menyusun data dengan menggunakan kelas ArrayObject. Kelas ini menyediakan kaedah Pengecualian SPL adalah jenis pengecualian yang direka khas untuk SPL. Mereka menyediakan cara untuk menangani kesilapan yang berlaku semasa menggunakan SPL. Untuk menggunakan pengecualian SPL, anda hanya membuangnya ke dalam blok Anda boleh menggunakan kelas SplfileObject untuk membaca dan menulis fail. Kelas ini menyediakan kaedah untuk membuka, membaca, menulis, dan menutup fail. Ia juga menyediakan kaedah untuk memindahkan petunjuk fail dan memeriksa sama ada akhir fail telah dicapai. Anda boleh menggunakan kelas direktori untuk memproses direktori. Kelas ini menyediakan kaedah untuk membuka direktori, membaca kandungannya, dan menutup direktori. Ia juga menyediakan kaedah untuk memeriksa sama ada fail adalah direktori dan untuk mendapatkan saiz, jenis, dan masa pengubahsuaian fail. Anda boleh menggunakan kelas ArrayObject dan ArrayIterator untuk memproses tatasusunan. Kelas -kelas ini menyediakan kaedah untuk membuat array, menambah item kepadanya, mengeluarkan item daripadanya, dan melangkah ke atas itemnya. Mereka juga menyediakan kaedah untuk menyusun tatasusunan dan memeriksa jika item wujud dalam array. Anda boleh menggunakan pelbagai kelas struktur data yang disediakan oleh SPL untuk memproses struktur data. Kelas -kelas ini termasuk splstack, splqueue, splheap, dan splpriorityqueue. Setiap kelas menyediakan kaedah untuk mewujudkan struktur data, menambah item kepadanya, mengeluarkan item daripadanya, dan melangkah ke atas itemnya. <?php
// 一个数组(使用PHP 5.4的新简写法)
$arr = ["sitepoint", "phpmaster", "buildmobile", "rubysource",
"designfestival", "cloudspring"];
// 创建一个新的ArrayIterator并传入数组
$iter = new ArrayIterator($arr);
// 遍历对象
foreach ($iter as $key => $value) {
echo $key . ": " . $value . "<br></br>";
}
<code>0: sitepoint
1: phpmaster
2: buildmobile
3: rubysource
4: designfestival
5: cloudspring</code>
foreach
atau panggilan ArrayIterator :: getIterator () secara langsung, ia secara automatik akan membuat arrayIterator untuk anda. Perhatikan bahawa sementara ArrayObject dan ArrayIterator berkelakuan seperti array dalam konteks ini, mereka masih objek; ArrayIterator mudah digunakan, tetapi hanya untuk tatasusunan satu dimensi. Kadang -kadang anda mempunyai pelbagai multidimensi dan anda ingin berulang -ulang meleleh melalui array bersarang. Dalam kes ini, anda boleh menggunakan RecursiveArrayIterator. Senario yang biasa adalah untuk bersarang sort()
gelung atau membuat fungsi rekursif untuk memeriksa semua item dalam pelbagai multidimensi. Contohnya: array_keys()
foreach
output kod di atas adalah: <?php
// 一个多维数组
$arr = [
["sitepoint", "phpmaster"],
["buildmobile", "rubysource"],
["designfestival", "cloudspring"],
"not an array"
];
// 遍历对象
foreach ($arr as $key => $value) {
// 检查数组
if (is_array($value)) {
foreach ($value as $k => $v) {
echo $k . ": " . $v . "<br></br>";
}
} else {
echo $key . ": " . $value . "<br></br>";
}
}
<code>0: sitepoint
1: phpmaster
0: buildmobile
1: rubysource
0: designfestival
1: cloudspring
3: not an array</code>
<?php
...
$iter = new RecursiveArrayIterator($arr);
// 遍历对象
// 我们需要创建一个RecursiveIteratorIterator实例
foreach (new RecursiveIteratorIterator($iter) as $key => $value) {
echo $key . ": " . $value . "<br></br>";
}
scandir()
glob()
output jelas bergantung pada jalan yang anda nyatakan dan kandungan direktori. Contohnya: <?php
// 创建新的DirectoryIterator对象
$dir = new DirectoryIterator("/my/directory/path");
// 遍历目录列表
foreach ($dir as $item) {
echo $item . "<br></br>";
}
<?php
// 一个数组(使用PHP 5.4的新简写法)
$arr = ["sitepoint", "phpmaster", "buildmobile", "rubysource",
"designfestival", "cloudspring"];
// 创建一个新的ArrayIterator并传入数组
$iter = new ArrayIterator($arr);
// 遍历对象
foreach ($iter as $key => $value) {
echo $key . ": " . $value . "<br></br>";
}
<code>0: sitepoint
1: phpmaster
2: buildmobile
3: rubysource
4: designfestival
5: cloudspring</code>
<?php
// 一个多维数组
$arr = [
["sitepoint", "phpmaster"],
["buildmobile", "rubysource"],
["designfestival", "cloudspring"],
"not an array"
];
// 遍历对象
foreach ($arr as $key => $value) {
// 检查数组
if (is_array($value)) {
foreach ($value as $k => $v) {
echo $k . ": " . $v . "<br></br>";
}
} else {
echo $key . ": " . $value . "<br></br>";
}
}
<code>0: sitepoint
1: phpmaster
0: buildmobile
1: rubysource
0: designfestival
1: cloudspring
3: not an array</code>
<?php
...
$iter = new RecursiveArrayIterator($arr);
// 遍历对象
// 我们需要创建一个RecursiveIteratorIterator实例
foreach (new RecursiveIteratorIterator($iter) as $key => $value) {
echo $key . ": " . $value . "<br></br>";
}
Soalan Lazim Mengenai Menggunakan Iterator SPL SPL bermaksud perpustakaan php standard. Ia adalah satu set antara muka dan kelas yang direka untuk menyelesaikan masalah biasa. SPL menyediakan banyak struktur data, antara muka, dan pengecualian yang boleh digunakan untuk mengendalikan tugas kompleks dengan lebih cekap. Ia penting kerana ia dapat membantu mengurangkan jumlah kod yang anda perlukan untuk menulis, meningkatkan prestasi, dan menjadikan kod anda lebih mudah untuk dibaca dan diselenggara.
Iterator SPL digunakan untuk melangkah ke atas set data. Untuk menggunakan Iterator SPL, anda perlu membuat contoh kelas Iterator. Anda kemudian boleh melangkah melalui koleksi menggunakan kaedah iterator. Sebagai contoh, anda boleh menggunakan kaedah
untuk mendapatkan item semasa, gunakan kaedah current()
untuk memeriksa sama ada terdapat lebih banyak item untuk melangkah ke atas. next()
valid()
Apakah beberapa contoh pengiklan SPL? Terdapat banyak jenis pengiklan SPL, masing -masing direka untuk tujuan tertentu. Beberapa contoh termasuk ArrayIterator (untuk melelehkan tatasusunan);
Bagaimana untuk menapis data menggunakan Iterator SPL?
Bagaimana untuk menyusun data menggunakan Iterator SPL?
asort()
untuk menyusun item dalam koleksi. Anda juga boleh menggunakan kaedah uasort()
untuk menyusun item menggunakan fungsi perbandingan tersuai. Apakah pengecualian SPL dan bagaimana anda menggunakannya?
try
dan menangkapnya di blok catch
. Bagaimana cara membaca dan menulis fail menggunakan SPL?
Bagaimana menggunakan SPL untuk memproses direktori?
Bagaimana menggunakan SPL untuk memproses tatasusunan?
Bagaimana menggunakan SPL untuk memproses struktur data?
Atas ialah kandungan terperinci Menggunakan Iterator SPL, Bahagian 1. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Alipay Php ...

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Bagaimana cara debug mod CLI dalam phpstorm? Semasa membangun dengan PHPStorm, kadang -kadang kita perlu debug PHP dalam mod Interface Line Command (CLI) ...

Bagaimana untuk menetapkan keizinan UnixSocket secara automatik selepas sistem dimulakan semula. Setiap kali sistem dimulakan semula, kita perlu melaksanakan perintah berikut untuk mengubahsuai keizinan UnixSocket: sudo ...

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Menghantar data JSON menggunakan perpustakaan Curl PHP dalam pembangunan PHP, sering kali perlu berinteraksi dengan API luaran. Salah satu cara biasa ialah menggunakan perpustakaan curl untuk menghantar post ...
