Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Cekap Mencari Kunci Padanan Pertama dalam Tatasusunan PHP Berbilang Dimensi?
Menyelam ke dalam Traversal Tatasusunan Berbilang Dimensi: Temui Kunci Padanan Pertama
Dalam bidang pengaturcaraan PHP, melintasi tatasusunan multidimensi boleh menjadi tugas labirin . Apabila berhadapan dengan objektif untuk mendapatkan semula nilai yang dikaitkan dengan kunci padanan pertama, pembangun mungkin tersandung pada pendekatan rekursif. Satu kaedah sedemikian, yang digariskan di bawah, membentangkan kemungkinan perangkap dalam pelaksanaan rekursifnya:
<br>mencari fungsi peribadi($needle, $haystack) {</p> <pre class="brush:php;toolbar:false">foreach ($haystack as $name => $file) { if ($needle == $name) { return $file; } else if(is_array($file)) { //is folder return $this->find($needle, $file); //file is the new haystack } } return "did not find";
}
Fungsi ini bertujuan untuk secara rekursif teroka tatasusunan bersekutu, mencari kunci yang sejajar dengan jarum yang dimasukkan dan mengembalikan nilai yang sepadan. Walau bagaimanapun, rekursi masih tidak lengkap, meninggalkan soalan tidak dijawab.
Merangkul PHP Moden untuk Penyelesaian Diperkemas
Dalam landskap PHP yang sentiasa berkembang, versi yang lebih baharu menawarkan lebih banyak pendekatan yang cekap dan elegan untuk traversal array. Pertimbangkan coretan berikut yang disesuaikan untuk PHP 5.6 dan ke atas:
<br>fungsi rekursifFind(array $haystack, $needle)<br>{</p> <pre class="brush:php;toolbar:false">$iterator = new RecursiveArrayIterator($haystack); $recursive = new RecursiveIteratorIterator( $iterator, RecursiveIteratorIterator::SELF_FIRST ); foreach ($recursive as $key => $value) { if ($key === $needle) { return $value; } }
}
Ini kod yang dimodenkan menggunakan kuasa penjana untuk memudahkan proses lintasan rekursif. Ia melancarkan dengan lancar semua elemen tatasusunan, menapis jarum sebelum segera mengembalikan nilai yang sepadan.
Meluaskan Fungsi dengan Penjana
Kemunculan PHP 5.6 memperkenalkan penjana, memperkasakan pembangun untuk menghasilkan berbilang padanan daripada carian rekursif, bukan hanya yang pertama ditemui. Coretan berikut mempamerkan kefungsian yang dipertingkatkan ini:
<br>fungsi recursiveFind(array $haystack, $needle)<br>{</p> <pre class="brush:php;toolbar:false">$iterator = new RecursiveArrayIterator($haystack); $recursive = new RecursiveIteratorIterator( $iterator, RecursiveIteratorIterator::SELF_FIRST ); foreach ($recursive as $key => $value) { if ($key === $needle) { yield $value; } }
}
// Penggunaan
foreach (recursiveFind($haystack, $needle) sebagai $value) {
// Use `$value` here
}
Sekarang, anda boleh mengulangi semua pasangan nilai kunci yang sepadan bukannya terhad pada perlawanan pertama. Ini memanjangkan kepelbagaian fungsi, membolehkan pengambilan data yang lebih komprehensif daripada tatasusunan berbilang dimensi.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Kunci Padanan Pertama dalam Tatasusunan PHP Berbilang Dimensi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!