Jadual Kandungan
Bagaimana foreach sebenarnya berfungsi dalam PHP?
Rumah pembangunan bahagian belakang tutorial php Bagaimana Gelung `foreach` PHP Sebenarnya Berfungsi, dan Bagaimana Pelaksanaannya Berubah Antara PHP 5 dan PHP 7?

Bagaimana Gelung `foreach` PHP Sebenarnya Berfungsi, dan Bagaimana Pelaksanaannya Berubah Antara PHP 5 dan PHP 7?

Dec 23, 2024 pm 10:20 PM

How Does PHP's `foreach` Loop Actually Work, and How Has Its Implementation Changed Between PHP 5 and PHP 7?

Bagaimana foreach sebenarnya berfungsi dalam PHP?

Pengenalan:
foreach digunakan secara meluas dalam PHP untuk gelung melalui tatasusunan, objek dan struktur data lain. Memahami kerja dalamannya adalah penting untuk mengelakkan tingkah laku yang tidak dijangka.

Tiga Jenis foreach Iterables:
foreach menyokong tiga jenis iterables:

  • Arrays
  • Biasa objek
  • Objek boleh lalui

Lelaran Objek Boleh Travers:
Untuk objek Boleh Travers, foreach bertindak sebagai gula sintaksis untuk:

foreach ($it as $k => $v) {}

translates to:

if ($it instanceof IteratorAggregate) {
    $it = $it->getIterator();
}
for ($it->rewind(); $it->valid(); $it->next()) {
    $v = $it->current();
    $k = $it->key();
    // ...
}
Salin selepas log masuk

Susun atur dan Objek Lelaran:

Kamus Tertib:
Tatasusunan dan objek PHP pada asasnya ialah kamus tersusun yang mengekalkan susunan sisipan. Lelaran mengikut tertib ini.

Penukaran Objek:
Perwakilan objek yang dibungkus ditukar kepada kamus semasa lelaran. Oleh itu, lelaran objek biasa menjadi serupa dengan lelaran tatasusunan.

Penunjuk Tatasusunan Dalaman (IAP):
Tasusunan dalam PHP 5 mempunyai penunjuk tatasusunan dalaman (IAP) yang menyokong pengubahsuaian dan melangkau terlebih dikeluarkan elemen.

HashPointer:
foreach dalam PHP 5 menggunakan HashPointer untuk menyandarkan kedudukan IAP dan cincang sebelum menjalankan badan gelung. Ia memulihkannya selepas itu jika unsur itu masih wujud; jika tidak, ia menggunakan kedudukan IAP semasa.

Penduaan Tatasusunan:
foreach dalam PHP 5 menduplikasi tatasusunan yang bukan rujukan (is_ref=0) dan mempunyai kiraan semula lebih daripada 1.

PHP 5 Contoh:

  • Dalam kes ujian 1 dan 2, tatasusunan tidak diduplikasi kerana ia mempunyai kiraan semula=1 dan diluluskan mengikut nilai.
  • Dalam kes ujian 3, IAP ditetapkan pada penghujung tatasusunan selepas gelung disebabkan oleh penyingkiran unsur.
  • Dalam kes ujian 4 dan 5, tatasusunan diduplikasi kerana fungsi by-ref (setiap, set semula) menerima rujukan kepada tatasusunan pendua.

Perubahan PHP 7:

Pelajar Hashtable:
PHP 7 menggunakan iterator jadual hash luaran, didaftarkan dalam tatasusunan. Setiap iterator dimajukan jika elemen yang sepadan dialih keluar.

Tiada Penggunaan IAP oleh foreach:
foreach tidak lagi menggunakan IAP, menghapuskan keperluan untuk pendua. Lelaran tatasusunan nilai ikut sentiasa menggunakan elemen asal.

Penduaan Tatasusunan:
Tasusunan tidak lagi diduplikasi semasa lelaran nilai mengikut, tanpa mengira pengiraan semula atau status rujukannya.

Contoh PHP 7:

  • Dalam PHP 7, kes ujian 1 dan 2 mempunyai output yang sama seperti dalam PHP 5 kerana tatasusunan tidak diduplikasi.
  • Dalam PHP 7, kes ujian 3 menghasilkan output yang berbeza kerana gelung no lebih lama mempengaruhi IAP.
  • Dalam PHP 7, kes ujian 4 dan 5 berkelakuan serupa kerana setiap satu dan set semula masih menduplikasi tatasusunan, manakala foreach menggunakan tatasusunan asal.

Peningkatan PHP 7 Tambahan:

  • Gelung luar dalam lelaran bersarang tidak lagi dibatalkan apabila elemen dialih keluar dalam gelung dalaman.
  • Masalah "anak panah dalam masa" ialah diselesaikan.

Atas ialah kandungan terperinci Bagaimana Gelung `foreach` PHP Sebenarnya Berfungsi, dan Bagaimana Pelaksanaannya Berubah Antara PHP 5 dan PHP 7?. 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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat 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)

Topik panas

Tutorial Java
1664
14
Tutorial PHP
1267
29
Tutorial C#
1239
24
PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular Apr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

Terangkan hashing kata laluan yang selamat di PHP (mis., Password_hash, password_verify). Mengapa tidak menggunakan MD5 atau SHA1? Terangkan hashing kata laluan yang selamat di PHP (mis., Password_hash, password_verify). Mengapa tidak menggunakan MD5 atau SHA1? Apr 17, 2025 am 12:06 AM

Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.

PHP dalam Tindakan: Contoh dan aplikasi dunia nyata PHP dalam Tindakan: Contoh dan aplikasi dunia nyata Apr 14, 2025 am 12:19 AM

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

Apakah kaedah permintaan HTTP (dapatkan, pos, letakkan, padam, dll) dan kapan masing -masing harus digunakan? Apakah kaedah permintaan HTTP (dapatkan, pos, letakkan, padam, dll) dan kapan masing -masing harus digunakan? Apr 09, 2025 am 12:09 AM

Kaedah permintaan HTTP termasuk GET, POST, PUT dan DELETE, yang digunakan untuk mendapatkan, menghantar, mengemas kini dan memadam sumber masing -masing. 1. Kaedah GET digunakan untuk mendapatkan sumber dan sesuai untuk operasi membaca. 2. Kaedah Pos digunakan untuk menyerahkan data dan sering digunakan untuk membuat sumber baru. 3. Kaedah Put digunakan untuk mengemas kini sumber dan sesuai untuk kemas kini lengkap. 4. Kaedah Padam digunakan untuk memadam sumber dan sesuai untuk operasi penghapusan.

PHP: Bahasa utama untuk pembangunan web PHP: Bahasa utama untuk pembangunan web Apr 13, 2025 am 12:08 AM

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

Terangkan perbezaan antara diri ::, ibu bapa ::, dan statik :: dalam php oop. Terangkan perbezaan antara diri ::, ibu bapa ::, dan statik :: dalam php oop. Apr 09, 2025 am 12:04 AM

Dalam phpoop, diri :: merujuk kepada kelas semasa, ibu bapa :: merujuk kepada kelas induk, statik :: digunakan untuk mengikat statik lewat. 1.Self :: digunakan untuk kaedah statik dan panggilan berterusan, tetapi tidak menyokong pengikatan statik lewat. 2.Parent :: digunakan untuk subkelas untuk memanggil kaedah kelas induk, dan kaedah peribadi tidak dapat diakses. 3.Static :: Menyokong pengikatan statik lewat, sesuai untuk warisan dan polimorfisme, tetapi boleh menjejaskan kebolehbacaan kod.

Bagaimana PHP mengendalikan fail memuat naik dengan selamat? Bagaimana PHP mengendalikan fail memuat naik dengan selamat? Apr 10, 2025 am 09:37 AM

PHP mengendalikan fail muat naik melalui pembolehubah fail $ \ _. Kaedah untuk memastikan keselamatan termasuk: 1. Semak kesilapan muat naik, 2. Sahkan jenis dan saiz fail, 3. Mencegah penindasan fail, 4. Pindahkan fail ke lokasi storan tetap.

Bagaimanakah jenis membayangkan jenis PHP, termasuk jenis skalar, jenis pulangan, jenis kesatuan, dan jenis yang boleh dibatalkan? Bagaimanakah jenis membayangkan jenis PHP, termasuk jenis skalar, jenis pulangan, jenis kesatuan, dan jenis yang boleh dibatalkan? Apr 17, 2025 am 12:25 AM

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.

See all articles