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
Susan Sarandonasal
2024-12-28 15:47:33206semak imbas

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;
}

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!

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