Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menapis Tatasusunan Bersekutu dalam PHP Berdasarkan Kekunci daripada Tatasusunan Berindeks?

Bagaimana untuk Menapis Tatasusunan Bersekutu dalam PHP Berdasarkan Kekunci daripada Tatasusunan Berindeks?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-13 08:39:10388semak imbas

How to Filter an Associative Array in PHP Based on Keys from an Indexed Array?

Menapis Tatasusunan Bersekutu Berdasarkan Kekunci dalam Tatasusunan Berindeks

Dalam PHP, array_filter() menyediakan kaedah yang mudah untuk menapis tatasusunan bersekutu berdasarkan pada nilai mereka. Walau bagaimanapun, fungsi ini hanya mempertimbangkan nilai, meninggalkan pengaturcara mencari cara untuk menapis kunci berdasarkan set nilai yang dibenarkan. Soalan ini menangani cabaran ini.

Memandangkan tatasusunan bersekutu ($my_array) dan tatasusunan diindeks kekunci yang dibenarkan ($dibenarkan), tugasnya adalah untuk mengalih keluar semua kunci daripada $my_array yang tidak terdapat dalam $allowed. Output yang diingini ialah $my_array yang mengandungi hanya pasangan nilai kunci di mana kunci ditemui dalam $allowed.

Penyelesaian:

Jawapannya mencadangkan penggunaan dua manipulasi tatasusunan fungsi:

  • array_intersect_key(): Fungsi ini melakukan perbandingan antara dua tatasusunan menggunakan kekuncinya. Ia mengembalikan tatasusunan baharu yang mengandungi hanya kunci yang terdapat dalam kedua-dua tatasusunan.
  • array_flip(): Fungsi ini membalikkan kekunci dan nilai tatasusunan bersekutu, dengan berkesan mengubah kuncinya menjadi nilai dan begitu juga sebaliknya.

Menggabungkan kedua-dua fungsi ini, anda boleh menapis tatasusunan bersekutu sebagai berikut:

$filtered_array = array_intersect_key($my_array, array_flip($allowed));

Di sini, array_flip($allowed) mencipta tatasusunan baharu dengan nilai daripada $allowed menjadi kunci dan kunci menjadi nilai. array_intersect_key($my_array, ...) kemudian membandingkan $my_array dengan tatasusunan terbalik, mengembalikan tatasusunan dengan hanya kekunci yang dibenarkan sebagai kunci dan nilai yang berkaitan dengannya.

Contoh:

Menggunakan contoh yang disediakan:

$my_array = array("foo" => 1, "hello" => "world");
$allowed = array("foo", "bar");

$filtered_array yang terhasil ialah:

array("foo" => 1);

Atas ialah kandungan terperinci Bagaimana untuk Menapis Tatasusunan Bersekutu dalam PHP Berdasarkan Kekunci daripada Tatasusunan Berindeks?. 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