Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mencari Nilai dengan Cekap dalam Kunci 'slug' Tatasusunan PHP Berbilang Dimensi?
Mencari Tatasusunan PHP Berbilang Dimensi mengikut Nilai
Dalam senario ini, anda ditugaskan untuk membangunkan fungsi yang mencari tatasusunan berbilang dimensi untuk sesuatu tertentu nilai dalam kekunci "slug". Berikut ialah pecahan proses carian dan penyelesaian yang boleh anda pertimbangkan:
Menggunakan array_search() dan array_column()
Memperkenalkan array_search() dan array_column(). array_search() cekap mencari indeks nilai dalam tatasusunan, manakala array_column() mengekstrak nilai tertentu daripada tatasusunan berbilang dimensi, mencipta tatasusunan baharu dengan nilai yang diekstrak tersebut. Menggunakan fungsi ini, anda boleh mencari tatasusunan seperti berikut:
function search_array($array, $key, $value) { return array_search($value, array_column($array, $key)); }
Menggunakan Fungsi Rekursif Tersuai
Sebagai alternatif, anda boleh menggunakan fungsi tersuai yang berulang melalui tatasusunan secara rekursif, membandingkan nilai "slug" dengan sasaran value:
function search_array_recursive($array, $key, $value) { foreach ($array as $subarray) { if (is_array($subarray)) { $found = search_array_recursive($subarray, $key, $value); if ($found !== false) { return $found; } } else if ($subarray[$key] == $value) { return $subarray; } } return false; }
Menggunakan array_walk_recursive()
Selain itu, anda boleh menggunakan array_walk_recursive() untuk melintasi tatasusunan dan menggunakan logik carian anda pada setiap elemen:
function search_array_walk_recursive($array, $key, $value, &$found) { array_walk_recursive($array, function($subarray) use ($key, $value, &$found) { if (is_array($subarray)) { search_array_walk_recursive($subarray, $key, $value, $found); } else if ($subarray[$key] == $value) { $found = true; } }); }
Prestasi Pertimbangan
Kaedah array_search() secara amnya mengatasi teknik lain, terutamanya untuk saiz tatasusunan yang besar. Walau bagaimanapun, adalah penting untuk mempertimbangkan struktur tatasusunan anda, kerana ia memerlukan subarray terindeks untuk hasil yang tepat.
Ringkasan
Kaedah array_search() , digabungkan dengan array_column (), menyediakan penyelesaian yang cekap dan boleh dibaca untuk mencari tatasusunan berbilang dimensi dengan nilai tertentu. Walau bagaimanapun, jika anda perlu menyokong subarray tidak diindeks, kaedah rekursif menawarkan alternatif yang berdaya maju.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Nilai dengan Cekap dalam Kunci 'slug' Tatasusunan PHP Berbilang Dimensi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!