Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menanyakan berbilang nilai dalam tatasusunan php

Bagaimana untuk menanyakan berbilang nilai dalam tatasusunan php

PHPz
PHPzasal
2023-04-18 09:06:05611semak imbas

Dalam pembangunan web, selalunya perlu membuat pertanyaan tatasusunan. Kadang-kadang kita perlu menanyakan berbilang nilai dalam tatasusunan Jika kita mencari satu demi satu, ia bukan sahaja memakan masa dan intensif buruh, tetapi juga tidak cekap. Dan PHP menyediakan cara mudah untuk menanyakan berbilang nilai dalam tatasusunan.

Pertama, kita perlu menentukan tatasusunan untuk disoal, seperti yang ditunjukkan di bawah:

$array = array("red", "blue", "green", "yellow", "white", "black");

Andaikan kita perlu menanyakan berbilang nilai dalam tatasusunan ini, sebagai contoh, kita perlu bertanya " merah", "biru" dan "hitam", kita boleh menggunakan fungsi array_intersect() PHP untuk mencapai ini.

Fungsi ini boleh menerima dua atau lebih tatasusunan dan mengembalikan tatasusunan baharu yang mengandungi unsur-unsur yang terkandung dalam semua tatasusunan.

Mari lihat cara menggunakan fungsi array_intersect() untuk membuat pertanyaan untuk berbilang nilai. Mula-mula kita membentuk berbilang nilai ke dalam tatasusunan:

$to_query = array("red", "blue", "black");

Kemudian kita boleh menggunakan fungsi array_intersect() untuk menanyakan berbilang nilai dalam tatasusunan ini:

$result = array_intersect($array, $to_query);

Dalam ini Caranya, Kita boleh mendapatkan berbilang nilai yang kita perlukan untuk pertanyaan dalam tatasusunan $result. Anda boleh menggunakan fungsi print_r() untuk mengeluarkan tatasusunan $result:

print_r($result);

Hasil output adalah seperti berikut:

Array
(
    [0] => red
    [1] => blue
    [5] => black
)

Seperti yang anda lihat, kami telah bertanya " merah", " Tiga nilai adalah "biru" dan "hitam". Ambil perhatian bahawa indeks tatasusunan hasil output adalah sama dengan indeks tatasusunan asal.

Seperti yang dinyatakan di atas, fungsi array_intersect() boleh menerima berbilang tatasusunan, jadi kami juga boleh menanyakan berbilang set nilai sekali gus.

Mari kita lihat contoh yang lebih kompleks. Katakan kita mempunyai tatasusunan bersekutu yang mengandungi maklumat tentang berbilang pengguna:

$users = array(
    array("name" => "Tom", "age" => 20, "gender" => "M"),
    array("name" => "Jack", "age" => 22, "gender" => "M"),
    array("name" => "Mary", "age" => 21, "gender" => "F"),
    array("name" => "Lucy", "age" => 19, "gender" => "F")
);

Sekarang, kita perlu menanyakan maklumat pengguna yang berumur 19 atau 22 tahun dan jantina lelaki. Kita boleh membentuk tatasusunan bersekutu dengan syarat untuk disoal:

$to_query = array("age" => array(19, 22), "gender" => "M");

Elemen pertama dalam tatasusunan ini ialah tatasusunan, termasuk dua nilai umur untuk disoal; disoal nilai jantina.

Kemudian anda boleh menggunakan fungsi array_intersect() untuk bertanya:

function array_query($array, $to_query) {
    return array_filter($array, function ($item) use ($to_query) {
        foreach ($to_query as $key => $value) {
            if (!in_array($item[$key], (array)$value)) {
                return false;
            }
        }
        return true;
    });
}

$result = array_query($users, $to_query);

Kami telah memperibadikan fungsi array_query() di sini. Fungsi ini menerima dua parameter, parameter pertama ialah tatasusunan untuk disoal, dan parameter kedua ialah syarat untuk disoal. Fungsi

secara dalaman menggunakan fungsi array_filter() PHP dan fungsi tanpa nama untuk menapis tatasusunan. Untuk keadaan pertanyaan input $to_query, fungsi menapis terlebih dahulu elemen tatasusunan yang memenuhi syarat berdasarkan syarat ini.

Kemudian, kembalikan hasilnya kepada hasil pertanyaan $result.

Akhir sekali, kita boleh menggunakan fungsi print_r() untuk mengeluarkan hasil pertanyaan:

print_r($result);

Hasil output adalah seperti berikut:

Array
(
    [0] => Array
        (
            [name] => Tom
            [age] => 20
            [gender] => M
        )

    [1] => Array
        (
            [name] => Jack
            [age] => 22
            [gender] => M
        )

)

Seperti yang anda boleh lihat, kami berjaya menyoal Dua maklumat pengguna yang memenuhi syarat.

Dalam pembangunan sebenar, kita selalunya perlu melakukan pertanyaan berbilang nilai pada tatasusunan. Fungsi ini boleh dilaksanakan dengan mudah menggunakan fungsi array_intersect() dalam PHP. Selain itu, kita juga boleh merangkumkannya mengikut keperluan kita dan membina fungsi yang sesuai dengan keperluan kita sendiri.

Atas ialah kandungan terperinci Bagaimana untuk menanyakan berbilang nilai dalam tatasusunan 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