Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencari Baris Tatasusunan dengan Nilai Lajur dalam Tatasusunan Rata Menggunakan Fungsi Tatasusunan?

Bagaimana untuk Mencari Baris Tatasusunan dengan Nilai Lajur dalam Tatasusunan Rata Menggunakan Fungsi Tatasusunan?

DDD
DDDasal
2024-10-23 17:59:02993semak imbas

How to Find Array Rows with Column Values in a Flat Array Using Array Functions?

Mencari Baris Tatasusunan dengan Nilai Lajur dalam Tatasusunan Rata

Dalam senario ini, anda diberi dua tatasusunan: tatasusunan asal, $arr1 , dengan berbilang lajur dan tatasusunan kedua, $arr2, mengandungi senarai nilai ID unik. Objektifnya adalah untuk memperhalusi $arr1 dengan memilih hanya baris yang mengandungi nilai ID yang terdapat dalam $arr2.

Penyelesaian yang sangat cekap untuk masalah ini terletak pada penggunaan fungsi array_uintersect(). Fungsi ini menggunakan panggilan balik tersuai untuk membandingkan elemen daripada kedua-dua tatasusunan input. Dalam panggilan balik tersuai ini, kami mengakses nilai daripada lajur 'id'. Jika lajur itu tiada, kami kembali kepada nilai parameter.

array_uintersect() memanfaatkan teknik pengisihan semasa penilaian untuk mengoptimumkan masa pelaksanaan. Dengan membandingkan nilai lajur dan nilai ID, ia mengenal pasti baris dalam $arr1 yang mempunyai ID ditemui dalam $arr2. Tatasusunan yang terhasil hanya akan terdiri daripada baris terpilih yang memenuhi syarat ini.

Untuk rujukan anda, di bawah ialah kod yang melaksanakan penyelesaian ini:

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

Atas ialah kandungan terperinci Bagaimana untuk Mencari Baris Tatasusunan dengan Nilai Lajur dalam Tatasusunan Rata Menggunakan Fungsi Tatasusunan?. 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