Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mencari Pasangan Nilai Kunci dengan Cekap dalam Tatasusunan PHP Berbilang Dimensi?
Mencari Pasangan Nilai-Kekunci dalam Tatasusunan PHP Berbilang Dimensi
Tatasusunan berbilang dimensi dalam PHP boleh menjadi sukar untuk dinavigasi, terutamanya apabila mencari kunci tertentu -pasangan nilai. Panduan komprehensif ini membentangkan kaedah yang cekap untuk mendapatkan semula semua subarray dengan pantas yang mengandungi pasangan nilai kunci yang ditentukan, tanpa mengira kedalaman sarang tatasusunan.
Penyelesaian yang dicadangkan ialah fungsi rekursif bernama carian, yang mengambil tatasusunan, kunci , dan nilai sebagai parameter. Ia menyemak sama ada pasangan nilai kunci wujud pada tahap semasa tatasusunan dan, jika ya, menambah subarray semasa pada keputusan. Selepas itu, ia berulang pada setiap subarray, memanggil dirinya secara rekursif untuk mengembangkan carian ke tahap yang lebih mendalam.
function search($array, $key, $value) { $results = array(); if (is_array($array)) { if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array; } foreach ($array as $subarray) { $results = array_merge($results, search($subarray, $key, $value)); } } return $results; }
Dengan menggunakan rekursi, fungsi carian meneroka keseluruhan struktur tatasusunan, memastikan semua pasangan nilai kunci yang sepadan adalah dikenal pasti.
Sebagai contoh, diberikan sampel berikut tatasusunan:
$arr = array(0 => array(id=>1,name=>"cat 1"), 1 => array(id=>2,name=>"cat 2"), 2 => array(id=>3,name=>"cat 1"));
Dan mencari key=name dan value="cat 1", fungsi akan kembali:
Array ( [0] => Array ( [id] => 1 [name] => cat 1 ) [1] => Array ( [id] => 3 [name] => cat 1 ) )
Untuk meningkatkan kecekapan, pelaksanaan alternatif menggabungkan hasil panggilan rekursif ke dalam tatasusunan $results tunggal dan bukannya mencipta tatasusunan berasingan:
function search($array, $key, $value) { $results = array(); 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); } }
Perhatikan bahawa ampersand & dalam senarai parameter menunjukkan rujukan lulus, memastikan semua panggilan rekursif mengubah suai tatasusunan $results yang sama.
Penyelesaian yang teguh dan serba boleh ini memberi kuasa kepada pembangun untuk mencari pasangan nilai kunci dengan lancar dalam tatasusunan PHP berbilang dimensi, tanpa mengira kedalaman atau kerumitannya .
Atas ialah kandungan terperinci Bagaimana untuk Mencari Pasangan Nilai Kunci dengan Cekap dalam Tatasusunan PHP Berbilang Dimensi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!