Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menapis Baris Tatasusunan dengan Memadankan Nilai Menggunakan array_uintersect()?

Bagaimana untuk Menapis Baris Tatasusunan dengan Memadankan Nilai Menggunakan array_uintersect()?

Linda Hamilton
Linda Hamiltonasal
2024-10-23 16:06:02144semak imbas

How to Filter Array Rows by Matching Values Using array_uintersect()?

Simpan Nilai Padanan Baris Tatasusunan dalam Tatasusunan Rata

Latar Belakang:

Anda mempunyai tatasusunan, $arr1, dengan berbilang lajur dan tatasusunan lain, $arr2, mengandungi senarai nilai. Matlamatnya adalah untuk menapis $arr1 dan mengekalkan hanya baris di mana lajur id sepadan dengan mana-mana nilai dalam $arr2.

Penyelesaian:

Menggunakan array_uintersect() :

Penyelesaian yang paling cekap menggunakan fungsi array_uintersect(), yang membandingkan elemen daripada dua tatasusunan menggunakan panggilan balik yang ditentukan pengguna. Dalam kes ini, panggilan balik menyemak sama ada nilai id sepadan.

var_export(
    array_uintersect(
        $arr1,
        $arr2,
        fn($a, $b) =>
            ($a['id'] ?? $a)
            <=>
            ($b['id'] ?? $b)
    )
);

Penjelasan:

  • Fungsi array_uintersect() mengambil dua tatasusunan dan satu panggilan balik sebagai argumen.
  • Fungsi panggil balik digunakan untuk setiap elemen daripada kedua-dua tatasusunan, dan ia harus mengembalikan 0 jika elemen dianggap sama, 1 jika elemen pertama lebih besar dan -1 jika elemen kedua lebih besar .
  • Jika elemen tidak mempunyai lajur id, nilai mentahnya digunakan untuk perbandingan.
  • Hasilnya ialah tatasusunan yang mengandungi hanya baris dari $arr1 di mana lajur id sepadan dengan nilai dalam $arr2.

Faedah array_uintersect():

  • Ia adalah fungsi PHP asli, memastikan kecekapan dan keserasian.
  • Ia melakukan pengisihan semasa menilai, yang mengoptimumkan prestasi.
  • Ia menyediakan penyelesaian yang ringkas dan boleh dibaca berbanding dengan panggilan berulang in_array().

Atas ialah kandungan terperinci Bagaimana untuk Menapis Baris Tatasusunan dengan Memadankan Nilai Menggunakan array_uintersect()?. 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