Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mencari Subarray dengan Cekap Berdasarkan Pasangan Nilai Kunci dalam Tatasusunan PHP Berbilang Dimensi?
Mencari Subarray Berdasarkan Pasangan Nilai-Kekunci dalam Tatasusunan PHP Berbilang Dimensi
Apabila merentasi tatasusunan berbilang dimensi, adalah sukar untuk mencari berdasarkan tatasusunan tertentu pada pasangan nilai kunci. Walau bagaimanapun, terdapat cara yang cekap untuk melakukan ini secara rekursif, tanpa mengira kedalaman tatasusunan.
Pelaksanaan Fungsi:
Mari kita cipta fungsi untuk mencari subarray yang memenuhi syarat yang ditetapkan :
function search($array, $key, $value) { $results = array(); if (is_array($array)) { // Check if the current subarray matches if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array; } // Recursively search inner subarrays foreach ($array as $subarray) { $results = array_merge($results, search($subarray, $key, $value)); } } return $results; }
Penggunaan Contoh:
Memandangkan tatasusunan sampel berikut:
$arr = array(0 => array(id => 1, name => "cat 1"), 1 => array(id => 2, name => "cat 2"), 2 => array(id => 3, name => "cat 1"));
Kita boleh mencari subarray dengan kunci 'nama' dan nilai 'kucing 1':
$found = search($arr, 'name', 'cat 1'); print_r($found);
Output:
Array ( [0] => Array ( [id] => 1 [name] => cat 1 ) [1] => Array ( [id] => 3 [name] => cat 1 ) )
Kecekapan Pertimbangan:
Untuk kecekapan yang lebih baik, terutamanya apabila berurusan dengan tatasusunan yang besar, fungsi boleh dioptimumkan dengan mengelakkan penggabungan tatasusunan. Sebaliknya, ia boleh menyimpan hasil daripada panggilan rekursif dalam tatasusunan sementara:
function search_optimized($array, $key, $value) { $results = []; search_r($array, $key, $value, $results); return $results; } function search_r($array, $key, $value, & $results) { if (!is_array($array)) { return; } if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array; } foreach ($array as $subarray) { search_r($subarray, $key, $value, $results); } }
Dengan menghantar tatasusunan hasil melalui rujukan, fungsi boleh membina hasil akhir dengan cekap.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Subarray dengan Cekap Berdasarkan Pasangan Nilai Kunci dalam Tatasusunan PHP Berbilang Dimensi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!