Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Saya Boleh Mencari Nilai Yang Dihubungkan dengan Kunci Khusus dalam Tatasusunan Berbilang Dimensi dengan Cekap?
Cari Nilai Kunci Padanan dalam Tatasusunan Berbilang Dimensi
Mencari kunci khusus dalam tatasusunan berbilang dimensi yang kompleks boleh menjadi tugas yang mencabar. Fungsi rekursif tersuai seperti yang disediakan cuba menangani cabaran ini. Namun, ia mungkin menghadapi masalah dengan pelaksanaan rekursinya.
Fungsi asal merentasi tatasusunan, mengembalikan nilai yang dikaitkan dengan kunci yang dicari jika ia ditemui. Walau bagaimanapun, jika nilai ialah tatasusunan (mewakili folder), ia secara rekursif memanggil dirinya sendiri pada sub-tatasusunan (timbunan jerami baharu). Rekursi ini boleh menjadi masalah.
Penyelesaian berpotensi melibatkan memanfaatkan RecursiveArrayIterator PHP. Dengan versi 5.6 dan lebih baru, menggunakan iterator ini menawarkan pendekatan yang lebih cekap dan boleh dipercayai:
function recursiveFind(array $haystack, $needle) { $iterator = new RecursiveArrayIterator($haystack); $recursive = new RecursiveIteratorIterator( $iterator, RecursiveIteratorIterator::SELF_FIRST ); foreach ($recursive as $key => $value) { if ($key === $needle) { return $value; } } }
Fungsi ini berulang secara rekursif, memeriksa kunci dan nilai di seluruh tatasusunan. Apabila menemui kunci padanan, ia mengembalikan nilai yang sepadan.
Sebagai alternatif, untuk PHP 5.6 dan ke atas, penjana boleh memudahkan pencarian berbilang kunci padanan:
function recursiveFind(array $haystack, $needle) { $iterator = new RecursiveArrayIterator($haystack); $recursive = new RecursiveIteratorIterator( $iterator, RecursiveIteratorIterator::SELF_FIRST ); foreach ($recursive as $key => $value) { if ($key === $needle) { yield $value; } } }
Dengan menggunakan penjana, anda boleh lelaran melalui semua nilai yang sepadan, bukan hanya yang pertama. Fungsi ini boleh terbukti berharga apabila mengendalikan tatasusunan yang kompleks dan bersarang dalam.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Nilai Yang Dihubungkan dengan Kunci Khusus dalam Tatasusunan Berbilang Dimensi dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!