Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mencari Tatasusunan Bersarang Tidak Sama dalam Tatasusunan Berbilang Dimensi?

Bagaimana untuk Mencari Tatasusunan Bersarang Tidak Sama dalam Tatasusunan Berbilang Dimensi?

Susan Sarandon
Lepaskan: 2024-11-16 14:19:03
asal
894 orang telah melayarinya

How to Find Dissimilar Nested Arrays within Multidimensional Arrays?

Cari Tatasusunan Bersarang Tidak Serupa dalam Tatasusunan Berbilang Dimensi

Pertimbangkan dua tatasusunan berikut yang mengandungi baris maklumat bersekutu:

$pageids = [
    ['id' => 1, 'linklabel' => 'Home', 'url' => 'home'],
    ['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'],
    ['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'],
    ['id' => 6, 'linklabel' => 'Logo Design', 'url' => 'logodesign'],
    ['id' => 15, 'linklabel' => 'Content Writing', 'url' => 'contentwriting'],
];

$parentpage = [
    ['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'],
    ['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'],
];
Salin selepas log masuk

Tugas kami adalah untuk mengenal pasti dan mengembalikan baris bersekutu yang terdapat dalam $pageids tetapi tiada dalam $parentpage. Walau bagaimanapun, menggunakan array_diff_assoc() pada peringkat pertama tatasusunan ini tidak memberikan hasil yang diingini.

Untuk mengatasi cabaran ini, kami boleh memanfaatkan gabungan array_map() dan serialize() fungsi. Pendekatan ini menukar setiap sub-tatasusunan kepada perwakilan rentetan, dengan berkesan meratakan struktur berbilang dimensi.

$pageWithNoChildren = array_map('unserialize',
    array_diff(array_map('serialize', $pageids), array_map('serialize', $parentpage)));
Salin selepas log masuk
  1. array_map('serialize', $pageids): Menukar setiap sub-array dalam $pageids kepada rentetan yang mewakili strukturnya.
  2. array_map('serialize', $parentpage): Proses yang sama untuk $parentpage.
  3. array_diff(): Membandingkan perwakilan rentetan dan mengembalikan tatasusunan perbezaan.
  4. array_map('unserialize', ...): Menukarkan perbezaan rentetan kembali ke sub-tatasusunan untuk memulihkan struktur yang diingini.

Tatasusunan $pageWithNoChildren yang terhasil mengandungi sub-tatasusunan daripada $pageids yang tidak terdapat dalam $parentpage:

array (
  0 => 
  array (
    'id' => 1,
    'linklabel' => 'Home',
    'url' => 'home',
  ),
  3 => 
  array (
    'id' => 6,
    'linklabel' => 'Logo Design',
    'url' => 'logodesign',
  ),
  4 => 
  array (
    'id' => 15,
    'linklabel' => 'Content Writing',
    'url' => 'contentwriting',
  ),
)
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mencari Tatasusunan Bersarang Tidak Sama dalam Tatasusunan Berbilang Dimensi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan