Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menapis Baris Tatasusunan Berdasarkan Nilai Lajur Padanan Nilai Khusus?

Bagaimana untuk Menapis Baris Tatasusunan Berdasarkan Nilai Lajur Padanan Nilai Khusus?

Linda Hamilton
Linda Hamiltonasal
2024-10-23 18:57:31812semak imbas

How to Filter Array Rows Based on Column Value Matching Specific Values?

Subset Baris Berdasarkan Kemasukan Nilai Lajur

Pertimbangkan tatasusunan, $arr1, dengan berbilang lajur dan tatasusunan rata kedua, $arr2, mengandungi nilai id tertentu. Objektifnya adalah untuk menapis $arr1 untuk mengekalkan hanya baris yang nilai lajur sepadan dengan mana-mana nilai dalam $arr2.

Percubaan sebelum ini menggunakan fungsi penapis atau array_search telah terbukti tidak berjaya. Penyelesaian praktikal melibatkan penggunaan fungsi PHP asli, array_uintersect().

Fungsi ini menggunakan fungsi panggil balik tanpa nama yang menilai lajur id (atau kembali kepada nilai parameter jika tiada) dalam kedua-dua tatasusunan input. Perbandingan menyemak kesamaan antara nilai.

Dalam panggilan balik, operator => digunakan untuk menangkap pembolehubah tatasusunan input $a dan $b, dan pengendali ternary ?: memberikan nilai pulangan bukan nol.

Di bawah tudung, array_uintersect melakukan pengisihan semasa proses penilaian, mengoptimumkan prestasi dan melaksanakan jauh lebih pantas daripada panggilan in_array() berulang.

Kod di bawah menunjukkan penyelesaiannya:

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

Atas ialah kandungan terperinci Bagaimana untuk Menapis Baris Tatasusunan Berdasarkan Nilai Lajur Padanan Nilai Khusus?. 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