Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk menanyakan tatasusunan dua dimensi dalam php

Bagaimana untuk menanyakan tatasusunan dua dimensi dalam php

PHPz
Lepaskan: 2023-04-24 16:15:03
asal
863 orang telah melayarinya

Dalam PHP, terdapat banyak cara untuk menanyakan tatasusunan dua dimensi. Walau bagaimanapun, untuk menjadi cekap dan mudah, kaedah pertanyaan yang berbeza perlu dinilai dan dipilih. Dalam artikel ini, saya akan memperkenalkan beberapa kaedah yang biasa digunakan, serta kelebihan dan kekurangannya.

  1. gelung untuk

Gelung for boleh melintasi keseluruhan tatasusunan dan keluar dari gelung apabila elemen sasaran ditemui, seperti ditunjukkan di bawah:

function search_array($arr, $key, $value) {
    for ($i = 0; $i < count($arr); $i++) {
        if ($arr[$i][$key] == $value) {
            return $i;
        }
    }
    return false;
}
Salin selepas log masuk

Semacam ini Kelebihan kaedah ini ialah ia mudah dan mudah difahami, sesuai untuk tatasusunan kecil dan bilangan pertanyaan yang kecil. Walau bagaimanapun, apabila saiz tatasusunan meningkat dan bilangan pertanyaan bertambah, gelung menjadi memakan masa dan susah payah serta boleh menyebabkan masalah prestasi.

  1. array_search()

array_search() fungsi boleh mencari nilai yang ditentukan dalam tatasusunan, ia mengembalikan nama kunci elemen atau palsu.

function search_array($arr, $key, $value) {
    foreach ($arr as $k => $v) {
        if (array_search($value, $v) !== false && $k == $key) {
            return $v;
        }
    }
    return false;
}
Salin selepas log masuk

Kaedah ini lebih ringkas, tetapi ia tidak dapat mengesan subtatasusunan tatasusunan bersarang. Di samping itu, ia tidak sesuai untuk senario di mana berbilang nilai yang sama perlu ditemui.

  1. array_filter()

array_filter() fungsi boleh menapis elemen dalam tatasusunan mengikut keadaan yang ditetapkan. Penggunaan array_filter() yang betul boleh meningkatkan kecekapan pertanyaan.

function search_array($arr, $key, $value) {
    $filtered = array_filter($arr, function ($item) use ($key, $value) {
        return ($item[$key] == $value);
    });
    reset($filtered);
    return current($filtered);
}
Salin selepas log masuk

Kaedah ini sangat fleksibel dan menyokong penapisan dengan keadaan yang kompleks. Walau bagaimanapun, ia hanya mengembalikan elemen pertama yang memenuhi syarat. Jika anda perlu mencari berbilang nilai yang sama, anda perlu menggunakan fungsi lain.

  1. array_reduce()

array_reduce() fungsi boleh menggabungkan elemen tatasusunan menjadi satu nilai dan boleh digunakan untuk mencari berbilang nilai yang sama.

function search_array($arr, $key, $value) {
    $foundItems = array_reduce($arr, function ($carry, $item) use ($key, $value) {
        if ($item[$key] == $value) {
            array_push($carry, $item);
        }
        return $carry;
    }, []);
    return $foundItems;
}
Salin selepas log masuk

Kaedah ini sangat sesuai untuk mencari berbilang nilai yang sama, dan boleh mengembalikan semua elemen yang memenuhi syarat. Walau bagaimanapun, ia menganggap bahawa anda meletakkan semua elemen yang berkaitan dalam tatasusunan baharu.

Ringkasnya, kaedah pertanyaan yang berbeza sesuai untuk senario yang berbeza. Jika anda hanya sekali-sekala menanyakan tatasusunan kecil, gelung for adalah mencukupi jika anda perlu menggunakan penapisan bersyarat yang kompleks, array_filter() ialah pilihan anda jika anda perlu mencari berbilang nilai yang sama, anda perlu menggunakan fungsi array_reduce(). Akhirnya, anda perlu memilih kaedah yang paling sesuai dengan senario anda dan menggabungkannya dengan pengoptimuman untuk meningkatkan kecekapan kod anda.

Atas ialah kandungan terperinci Bagaimana untuk menanyakan tatasusunan dua 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan