Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pertanyaan tatasusunan berbilang dimensi PHP untuk nilai tertentu

Pertanyaan tatasusunan berbilang dimensi PHP untuk nilai tertentu

WBOY
WBOYasal
2023-05-05 21:21:06590semak imbas

Dalam PHP, tatasusunan ialah struktur data yang sangat biasa Ia adalah jenis data yang boleh menyimpan berbilang nilai. Tatasusunan berbilang dimensi merujuk kepada tatasusunan yang boleh menyimpan tatasusunan lain, iaitu tatasusunan tatasusunan. Tatasusunan berbilang dimensi sangat sesuai untuk situasi tertentu, tetapi apabila menanyakan nilai tertentu, anda mungkin perlu menggunakan beberapa kaedah dan teknik khas. Artikel ini akan memperkenalkan cara untuk menanyakan nilai tertentu dalam tatasusunan berbilang dimensi dalam PHP.

  1. Menggunakan gelung untuk melintasi tatasusunan

Dalam PHP, cara paling mudah untuk menanyakan nilai dalam tatasusunan berbilang dimensi ialah menggunakan gelung untuk melintasi tatasusunan. Proses pelaksanaan khusus adalah seperti berikut:

function searchValue($arr, $value) {
    foreach ($arr as $key => $val) {
        if (is_array($val)) {
            $result = searchValue($val, $value);
            if ($result !== false) {
                return $result;
            }
        } else if ($val === $value) {
            return $key;
        }
    }
    return false;
}

Kod di atas menggunakan kaedah rekursif untuk melintasi tatasusunan berbilang dimensi, pergi lebih dalam lapisan demi lapisan sehingga nilai sasaran ditemui atau keseluruhan tatasusunan dilalui. Jika nilai sasaran ditemui, mengembalikan indeks di mana nilai itu berada, sebaliknya mengembalikan palsu.

  1. Menggunakan fungsi tatasusunan PHP

Selain menggunakan traversal gelung, kami juga boleh menggunakan beberapa fungsi tatasusunan PHP sendiri untuk menanyakan nilai tertentu dalam tatasusunan berbilang dimensi .

(1) fungsi array_walk_recursive

Fungsi array_walk_recursive boleh merentasi semua elemen dalam tatasusunan berbilang dimensi dan memanggil fungsi panggil balik untuk memproses setiap elemen. Proses pelaksanaan khusus adalah seperti berikut:

function searchValue($arr, $value) {
    $found = false;
    array_walk_recursive($arr, function($val, $key) use ($value, &$found) {
        if ($val === $value) {
            $found = $key;
        }
    });
    return $found;
}

Kod di atas menempatkan fungsi panggil balik fungsi array_walk_recursive dalam fungsi searchValue untuk mencari nilai sasaran Jika ditemui, indeks lokasi nilai disimpan dalam pembolehubah $found , dan mengembalikan nilai pembolehubah.

(2) fungsi array_column

Fungsi array_column boleh mendapatkan nilai lajur yang ditentukan daripada tatasusunan berbilang dimensi. Oleh itu, jika kita ingin bertanya sama ada nilai tertentu wujud dalam tatasusunan berbilang dimensi, kita boleh mula-mula menggunakan fungsi array_column untuk mendapatkan semua nilai lajur di mana nilai itu terletak, dan kemudian menanyakannya. Proses pelaksanaan khusus adalah seperti berikut:

function searchValue($arr, $value) {
    $col = array_column($arr, null);
    if (in_array($value, $col)) {
        return array_search($value, $col);
    } else {
        return false;
    }
}

Kod di atas menggunakan fungsi array_column untuk mendapatkan nilai semua elemen dalam keseluruhan tatasusunan berbilang dimensi dan menyimpannya dalam pembolehubah $col. Kemudian gunakan fungsi in_array untuk menentukan sama ada nilai sasaran wujud dalam tatasusunan $col Jika ditemui, gunakan fungsi array_search untuk mengembalikan indeks di mana nilai itu berada, sebaliknya, kembalikan palsu.

  1. Gunakan perpustakaan pihak ketiga

Selain menggunakan fungsi yang disertakan dengan PHP, kami juga boleh menggunakan fungsi dalam perpustakaan pihak ketiga untuk memproses tatasusunan berbilang dimensi . Antaranya, fungsi grep jQuery boleh digunakan untuk penapisan tatasusunan dan carian Kaedah penggunaan adalah seperti berikut:

function searchValue($arr, $value) {
    $result = null;
    foreach ($arr as $key => $val) {
        if (is_array($val)) {
            $result = searchValue($val, $value);
        } else if ($val === $value) {
            $result = $key;
        }
        if ($result) {
            break;
        }
    }
    return $result;
}

Kod di atas menggunakan kaedah rekursif untuk melintasi tatasusunan berbilang dimensi dan menggunakan fungsi grep jQuery untuk mencari. nilai sasaran. Jika nilai sasaran ditemui, mengembalikan indeks di mana nilai itu berada, sebaliknya mengembalikan null.

Ringkasan

Artikel ini memperkenalkan kaedah menyoal nilai tertentu dalam tatasusunan berbilang dimensi dalam PHP, termasuk menggunakan gelung untuk melintasi tatasusunan, fungsi tatasusunan PHP sendiri dan fungsi dalam ketiga- perpustakaan parti. Kaedah ini boleh dipilih dan digunakan mengikut situasi tertentu untuk mencapai hasil pertanyaan yang paling cekap.

Atas ialah kandungan terperinci Pertanyaan tatasusunan berbilang dimensi PHP untuk nilai tertentu. 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