Bagaimana untuk menanyakan berbilang nilai dalam tatasusunan php

PHPz
Lepaskan: 2023-04-18 09:26:41
asal
611 orang telah melayarinya

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");
Salin selepas log masuk

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");
Salin selepas log masuk

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

$result = array_intersect($array, $to_query);
Salin selepas log masuk

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);
Salin selepas log masuk
Salin selepas log masuk

Hasil output adalah seperti berikut:

Array
(
    [0] => red
    [1] => blue
    [5] => black
)
Salin selepas log masuk

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")
);
Salin selepas log masuk

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");
Salin selepas log masuk

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);
Salin selepas log masuk

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);
Salin selepas log masuk
Salin selepas log masuk

Hasil output adalah seperti berikut:

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

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

)
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan