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!