Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk mencari baris yang hadir dalam satu tatasusunan berbilang dimensi tetapi tidak dalam satu lagi?

Bagaimana untuk mencari baris yang hadir dalam satu tatasusunan berbilang dimensi tetapi tidak dalam satu lagi?

Susan Sarandon
Lepaskan: 2024-11-09 09:39:02
asal
880 orang telah melayarinya

How to Find Rows Present in One Multidimensional Array but Not in Another?

Membandingkan Baris Bersekutu Tatasusunan Berbilang Dimensi

Anda mempunyai dua tatasusunan berbilang dimensi, $pageids dan $parentpage, di mana setiap baris mewakili rekod dengan lajur 'id', 'linklabel' dan 'url'. Anda ingin mencari baris yang terdapat dalam $pageids tetapi tidak dalam $parentpage, dengan berkesan mencipta tatasusunan ($pageWithNoChildren) dengan baris yang hilang.

Walau bagaimanapun, menggunakan array_diff_assoc() secara langsung pada tatasusunan ini tidak akan berfungsi seperti yang diharapkan kerana ia membandingkan kunci tatasusunan utama, bukan kandungan baris bersarang. Untuk membandingkan baris bersarang, mula-mula kita boleh menukarnya kepada tatasusunan satu dimensi menggunakan array_map() dan fungsi serialize().

$serializedPageids = array_map('serialize', $pageids);
$serializedParentpage = array_map('serialize', $parentpage);
Salin selepas log masuk

Selepas menukarnya, kita boleh menggunakan array_diff() untuk membandingkan yang ini tatasusunan -dimensi dan dapatkan perbezaannya.

$serializedDifference = array_diff($serializedPageids, $serializedParentpage);
Salin selepas log masuk

Akhir sekali, kita boleh menukar semula perbezaan bersiri kepada tatasusunan berbilang dimensi menggunakan array_map() dan fungsi unserialize().

$pageWithNoChildren = array_map('unserialize', $serializedDifference);
Salin selepas log masuk

Ini proses membolehkan kami membandingkan kandungan baris bersarang dan mengekstrak baris yang terdapat dalam $pageids tetapi tidak dalam $parentpage, menghasilkan output yang dijangkakan:

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 baris yang hadir dalam satu tatasusunan berbilang dimensi tetapi tidak dalam satu lagi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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