Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menapis Kekunci Tatasusunan Bersekutu Berdasarkan Nilai Tatasusunan Terindeks dalam PHP?

Bagaimanakah Saya Boleh Menapis Kekunci Tatasusunan Bersekutu Berdasarkan Nilai Tatasusunan Terindeks dalam PHP?

DDD
DDDasal
2024-12-13 11:52:10762semak imbas

How Can I Filter Associative Array Keys Based on Indexed Array Values in PHP?

Tapis Kekunci Tatasusunan Bersekutu Berdasarkan Nilai Tatasusunan Terindeks

Ramai pengaturcara menghadapi cabaran menapis kekunci secara terpilih daripada tatasusunan bersekutu berdasarkan tertentu nilai yang disimpan dalam tatasusunan diindeks. Dalam PHP, fungsi panggil balik array_filter() hanya menyediakan akses kepada nilai tatasusunan, meninggalkan fungsi pemadanan kunci.

Pertimbangkan senario berikut di mana $my_array mengandungi pasangan nilai kunci:

$my_array = ["foo" => 1, "hello" => "world"];

Dan $allowed ialah tatasusunan diindeks mudah dengan kekunci yang dibenarkan:

$allowed = ["foo", "bar"];

The matlamatnya adalah untuk mengubah suai $my_array supaya ia hanya mengandungi kunci yang turut terdapat dalam $allowed. Output yang dikehendaki ialah:

$my_array = ["foo" => 1];

Untuk mencapai ini, kita boleh memanfaatkan fungsi array_intersect_key() dan array_flip():

var_dump(array_intersect_key($my_array, array_flip($allowed)));

Penjelasan:

  • **array_flip($allowed)**: Membalikkan kekunci dan nilai $allowed, menukarnya kepada tatasusunan bersekutu di mana kunci asal menjadi nilai dan sebaliknya. Ini membolehkan kami membandingkan kekunci daripada $my_array kepada nilai dalam tatasusunan terbalik.
  • array_intersect_key($my_array, $reversed): Bersilang kekunci $my_array dengan tatasusunan $allowed terbalik. Ini hanya mengekalkan kunci daripada $my_array yang hadir sebagai nilai dalam tatasusunan terbalik, menapis kekunci yang tidak diingini dengan berkesan.

Dengan menggabungkan fungsi ini, kita boleh mengalih keluar kekunci secara terpilih daripada tatasusunan bersekutu berdasarkan nilai dalam tatasusunan diindeks tanpa mengulangi kekunci secara manual dan membandingkannya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menapis Kekunci Tatasusunan Bersekutu Berdasarkan Nilai Tatasusunan Terindeks dalam PHP?. 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