Dalam PHP, terdapat banyak cara untuk menanyakan tatasusunan dua dimensi. Walau bagaimanapun, untuk menjadi cekap dan mudah, kaedah pertanyaan yang berbeza perlu dinilai dan dipilih. Dalam artikel ini, saya akan memperkenalkan beberapa kaedah yang biasa digunakan, serta kelebihan dan kekurangannya.
Gelung for boleh melintasi keseluruhan tatasusunan dan keluar dari gelung apabila elemen sasaran ditemui, seperti ditunjukkan di bawah:
function search_array($arr, $key, $value) { for ($i = 0; $i < count($arr); $i++) { if ($arr[$i][$key] == $value) { return $i; } } return false; }
Semacam ini Kelebihan kaedah ini ialah ia mudah dan mudah difahami, sesuai untuk tatasusunan kecil dan bilangan pertanyaan yang kecil. Walau bagaimanapun, apabila saiz tatasusunan meningkat dan bilangan pertanyaan bertambah, gelung menjadi memakan masa dan susah payah serta boleh menyebabkan masalah prestasi.
array_search() fungsi boleh mencari nilai yang ditentukan dalam tatasusunan, ia mengembalikan nama kunci elemen atau palsu.
function search_array($arr, $key, $value) { foreach ($arr as $k => $v) { if (array_search($value, $v) !== false && $k == $key) { return $v; } } return false; }
Kaedah ini lebih ringkas, tetapi ia tidak dapat mengesan subtatasusunan tatasusunan bersarang. Di samping itu, ia tidak sesuai untuk senario di mana berbilang nilai yang sama perlu ditemui.
array_filter() fungsi boleh menapis elemen dalam tatasusunan mengikut keadaan yang ditetapkan. Penggunaan array_filter() yang betul boleh meningkatkan kecekapan pertanyaan.
function search_array($arr, $key, $value) { $filtered = array_filter($arr, function ($item) use ($key, $value) { return ($item[$key] == $value); }); reset($filtered); return current($filtered); }
Kaedah ini sangat fleksibel dan menyokong penapisan dengan keadaan yang kompleks. Walau bagaimanapun, ia hanya mengembalikan elemen pertama yang memenuhi syarat. Jika anda perlu mencari berbilang nilai yang sama, anda perlu menggunakan fungsi lain.
array_reduce() fungsi boleh menggabungkan elemen tatasusunan menjadi satu nilai dan boleh digunakan untuk mencari berbilang nilai yang sama.
function search_array($arr, $key, $value) { $foundItems = array_reduce($arr, function ($carry, $item) use ($key, $value) { if ($item[$key] == $value) { array_push($carry, $item); } return $carry; }, []); return $foundItems; }
Kaedah ini sangat sesuai untuk mencari berbilang nilai yang sama, dan boleh mengembalikan semua elemen yang memenuhi syarat. Walau bagaimanapun, ia menganggap bahawa anda meletakkan semua elemen yang berkaitan dalam tatasusunan baharu.
Ringkasnya, kaedah pertanyaan yang berbeza sesuai untuk senario yang berbeza. Jika anda hanya sekali-sekala menanyakan tatasusunan kecil, gelung for adalah mencukupi jika anda perlu menggunakan penapisan bersyarat yang kompleks, array_filter() ialah pilihan anda jika anda perlu mencari berbilang nilai yang sama, anda perlu menggunakan fungsi array_reduce(). Akhirnya, anda perlu memilih kaedah yang paling sesuai dengan senario anda dan menggabungkannya dengan pengoptimuman untuk meningkatkan kecekapan kod anda.
Atas ialah kandungan terperinci Bagaimana untuk menanyakan tatasusunan dua dimensi dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!