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

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

Patricia Arquette
Lepaskan: 2024-12-09 20:59:15
asal
565 orang telah melayarinya

How to Efficiently Find a Key in a PHP Multidimensional Array by its Value?

Pencarian Tatasusunan Berbilang Dimensi PHP (Cari Kunci Mengikut Nilai)

Dalam senario ini, anda mempunyai tatasusunan berbilang dimensi yang mewakili koleksi produk. Setiap produk ditakrifkan oleh sifat seperti nama, slug, harga, dll. Matlamat anda adalah untuk mencari cara untuk mencari tatasusunan untuk produk tertentu menggunakan sifat slug dan mengembalikan kunci sepadannya dalam tatasusunan.

Satu cara untuk mencapai ini adalah dengan memanfaatkan fungsi array_search dan fungsi array_column. Berikut ialah fungsi tersuai yang merangkumi pendekatan ini:

function array_search_multidim(array $array, string $column, string $key)
{
    return array_search($key, array_column($array, $column));
}
Salin selepas log masuk

Untuk menggunakan fungsi ini, anda akan memanggilnya sedemikian:

$product_key = array_search_multidim($products, 'slug', 'breville-one-touch-tea-maker-BTM800XL');
Salin selepas log masuk

Ini akan mencari tatasusunan $products untuk produk dengan sifat slug sama dengan 'breville-one-touch-tea-maker-BTM800XL' dan kembalikan kuncinya yang sepadan. Dalam contoh ini, ia akan mengembalikan nilai 1.

Satu lagi penyelesaian yang mungkin adalah berdasarkan fungsi array_search. Untuk pendekatan ini, anda perlu menggunakan PHP 5.5.0 atau lebih tinggi:

$key = array_search('breville-one-touch-tea-maker-BTM800XL', array_column($products, 'slug'));
Salin selepas log masuk

Kod ini mencapai hasil yang sama seperti contoh sebelumnya.

Terdapat juga kaedah ketiga menggunakan array_walk_recursive yang secara rekursif melalui semua elemen tatasusunan dan membandingkan nilai slug dengan nilai yang diberikan:

function array_walk_recursive_search($input, $needle, &$result = null)
{
    if (is_array($input)) {
        foreach ($input as $key => $value) {
            array_walk_recursive_search($value, $needle, $result);
        }
    } else {
        if ($input === $needle) {
            $result = $key;
        }
    }
}
Salin selepas log masuk

Ini fungsi boleh digunakan seperti berikut:

array_walk_recursive($products, 'breville-one-touch-tea-maker-BTM800XL', $product_key);
Salin selepas log masuk

Adalah penting untuk ambil perhatian bahawa walaupun kaedah array_walk_recursive adalah lebih umum dan boleh mengendalikan sebarang jenis struktur tatasusunan, ia biasanya lebih perlahan daripada kaedah lain.

Secara keseluruhan, kaedah terbaik untuk digunakan bergantung pada keperluan khusus dan kekangan permohonan anda. Walau bagaimanapun, dua kaedah yang paling berkesan ialah kaedah yang menggunakan fungsi array_search dan array_column.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Kunci dalam Tatasusunan Berbilang Dimensi PHP dengan Nilainya?. 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