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

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

Susan Sarandon
Lepaskan: 2024-12-28 15:47:33
asal
189 orang telah melayarinya

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

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

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

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

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

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!

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