Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Mencari Nilai Dengan Cekap dalam Tatasusunan Berbilang Dimensi dalam PHP?

Bagaimanakah Saya Boleh Mencari Nilai Dengan Cekap dalam Tatasusunan Berbilang Dimensi dalam PHP?

Patricia Arquette
Lepaskan: 2024-12-17 17:11:09
asal
925 orang telah melayarinya

How Can I Efficiently Search for a Value Within a Multidimensional Array in PHP?

Mencari Nilai dalam Tatasusunan Berbilang Dimensi dengan in_array()

Fungsi in_array() ialah alat yang mudah untuk menyemak sama ada nilai wujud dalam tatasusunan. Walau bagaimanapun, kegunaannya hanya meluas kepada tatasusunan satu dimensi. Apabila berurusan dengan tatasusunan berbilang dimensi, pendekatan yang berbeza diperlukan.

Fungsi Rekursif untuk Tatasusunan Berbilang Dimensi

Untuk menentukan sama ada nilai wujud dalam tatasusunan berbilang dimensi, fungsi rekursif boleh digunakan. Berikut ialah contoh fungsi sedemikian:

def in_array_r(needle, haystack, strict = False):
    for item in haystack:
        if ((strict ? item === needle : item == needle) or (is_array(item) && in_array_r(needle, item, strict))) {
            return True
        }

    return False
Salin selepas log masuk

Fungsi ini mengambil tiga argumen: jarum untuk dicari, timbunan jerami untuk mencari di dalam dan bendera ketat pilihan yang menentukan sama ada untuk membandingkan nilai secara ketat (iaitu, jenis dan nilai).

Penggunaan

Untuk menggunakan fungsi rekursif, hanya panggilnya dengan jarum dan timbunan jerami yang dikehendaki:

$b = array(array("Mac", "NT"), array("Irix", "Linux"));
echo in_array_r("Irix", $b) ? 'found' : 'not found';
Salin selepas log masuk

Ini akan mengeluarkan 'ditemui', menunjukkan bahawa "Irix" wujud dalam tatasusunan berbilang dimensi $b.

Pendekatan Alternatif

Sementara fungsi rekursif ialah penyelesaian serba boleh, terdapat cara lain untuk menyemak nilai dalam pelbagai dimensi tatasusunan:

  • isArrayRecursive(): Lelaran melalui tatasusunan secara rekursif, menyemak setiap nilai secara individu.
  • implode() dan in_array(): Meletupkan tatasusunan berbilang dimensi ke dalam tatasusunan satu dimensi dan kemudian menggunakan in_array(). Walau bagaimanapun, pendekatan ini mungkin menghasilkan positif atau negatif palsu jika elemen mengandungi tatasusunan.
  • array_walk_recursive(): Menggunakan fungsi panggil balik untuk melintasi tatasusunan secara rekursif dan semak setiap nilai.

Akhirnya, pendekatan terbaik bergantung pada keperluan khusus aplikasi. Jika kelajuan menjadi kebimbangan, fungsi rekursif mungkin merupakan pilihan yang sesuai. Jika tidak, kaedah alternatif boleh memberikan penyelesaian yang lebih mudah atau lebih mantap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Nilai Dengan Cekap dalam Tatasusunan Berbilang Dimensi dalam 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