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

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

DDD
Lepaskan: 2024-12-20 21:26:19
asal
923 orang telah melayarinya

How to Efficiently Search for Key-Value Pairs in Multidimensional PHP Arrays?

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

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

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
        )

)
Salin selepas log masuk

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan