Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mencari Subarray dengan Cekap Berdasarkan Pasangan Nilai Kunci dalam Tatasusunan PHP Berbilang Dimensi?

Bagaimana untuk Mencari Subarray dengan Cekap Berdasarkan Pasangan Nilai Kunci dalam Tatasusunan PHP Berbilang Dimensi?

Susan Sarandon
Susan Sarandonasal
2024-12-15 20:39:18307semak imbas

How to Efficiently Find Subarrays Based on Key-Value Pairs in Multidimensional PHP Arrays?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn