Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
Susan Sarandonasal
2024-11-09 09:39:02814semak imbas

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);

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

$serializedDifference = array_diff($serializedPageids, $serializedParentpage);

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

$pageWithNoChildren = array_map('unserialize', $serializedDifference);

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',
  ),
)

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:
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