Mencari Pasangan Nilai Kunci dalam Tatasusunan Berbilang Dimensi dalam PHP
Pengenalan:
Mencari subarray khusus berdasarkan padanan nilai kunci dalam tatasusunan berbilang dimensi boleh menjadi mencabar, terutamanya apabila kedalaman tatasusunan tidak diketahui. Artikel ini meneroka pendekatan rekursif untuk mencapai operasi carian ini dengan cekap.
Definisi Fungsi:
function search($array, $key, $value) { // Initialize an empty results array $results = array(); // Check if the current element is an array if (is_array($array)) { // If the current element matches the key-value pair, add it to the results if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array; } // Recursively search through each subarray foreach ($array as $subarray) { $results = array_merge($results, search($subarray, $key, $value)); } } // Return the accumulated results return $results; }
Contoh:
Pertimbangkan tatasusunan berbilang dimensi berikut:
$arr = array( 0 => array('id' => 1, 'name' => "cat 1"), 1 => array('id' => 2, 'name' => "cat 2"), 2 => array('id' => 3, 'name' => "cat 1") );
Apabila mencari pasangan nilai kunci 'nama' => 'cat 1', fungsi akan kembali:
array( 0 => array('id' => 1, 'name' => "cat 1"), 1 => array('id' => 3, 'name' => "cat 1") );
Pertimbangan Prestasi:
Untuk senario di mana kecekapan diutamakan, pendekatan alternatif tersedia:
function searchOptimized($array, $key, $value) { $results = array(); searchOptimized_r($array, $key, $value, $results); return $results; } function searchOptimized_r($array, $key, $value, &$results) { if (!is_array($array)) { return; } if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array; } foreach ($array as $subarray) { searchOptimized_r($subarray, $key, $value, $results); } }
Dalam versi yang dioptimumkan ini, hasil carian terkumpul terus dalam tatasusunan $results sementara, menghapuskan keperluan untuk penggabungan tatasusunan. Dengan menyatakan rujukan pas dalam panggilan ke searchOptimized_r, versi ini mengekalkan prestasi tinggi sambil mengekalkan keserasian dengan versi PHP yang lebih lama.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Pasangan Nilai Kunci dengan Cekap dalam Tatasusunan Berbilang Dimensi PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!