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
Lepaskan: 2024-12-15 20:39:18
asal
305 orang telah melayarinya

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;
}
Salin selepas log masuk

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"));
Salin selepas log masuk

Kita boleh mencari subarray dengan kunci 'nama' dan nilai 'kucing 1':

$found = search($arr, 'name', 'cat 1');
print_r($found);
Salin selepas log masuk

Output:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => cat 1
        )

    [1] => Array
        (
            [id] => 3
            [name] => cat 1
        )

)
Salin selepas log masuk

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);
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan