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

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

DDD
Lepaskan: 2024-12-24 14:25:10
asal
558 orang telah melayarinya

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

Mencari Nilai dalam Tatasusunan Berbilang Dimensi Menggunakan Kekunci dalam PHP

Mencari pasangan nilai kunci tertentu dalam tatasusunan berbilang dimensi boleh menjadi tugas yang membosankan, terutamanya jika anda tidak tahu kedalaman tatasusunan. Artikel ini membentangkan fungsi PHP yang cekap yang merentasi tatasusunan secara rekursif, mengembalikan semua subarray yang sepadan dengan kriteria carian.

Fungsi, search(), mengambil tiga parameter: tatasusunan untuk dicari, kunci untuk mencari , dan nilai untuk dipadankan. Ia menggunakan rekursi untuk meneroka semua peringkat tatasusunan, menyemak pasangan nilai kunci pada setiap peringkat.

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

Sebagai contoh, memandangkan 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

Carian panggilan( $arr, 'name', 'cat 1') akan kembali:

array(0 => array('id' => 1, 'name' => 'cat 1'),
      1 => array('id' => 3, 'name' => 'cat 1'));
Salin selepas log masuk

Untuk kecekapan, versi fungsi yang dioptimumkan, search_r(), boleh digunakan:

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

Versi ini mengelakkan penggabungan tatasusunan berulang, menjadikannya lebih cekap.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Pasangan Nilai Kunci dalam Tatasusunan PHP Berbilang Dimensi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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