"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية العثور على الصفوف الموجودة في مصفوفة متعددة الأبعاد ولكن ليس في مصفوفة أخرى؟

كيفية العثور على الصفوف الموجودة في مصفوفة متعددة الأبعاد ولكن ليس في مصفوفة أخرى؟

تم النشر بتاريخ 2024-11-17
تصفح:176

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

مقارنة الصفوف الترابطية للمصفوفات متعددة الأبعاد

لديك مصفوفتان متعددتا الأبعاد، $pageids و$parentpage، حيث يمثل كل صف سجلاً يحتوي على أعمدة "المعرف" و"linklabel" و"عنوان URL". تريد العثور على الصفوف الموجودة في $pageids ولكن ليس في $parentpage، مما يؤدي إلى إنشاء مصفوفة ($pageWithNoChildren) بشكل فعال مع الصفوف المفقودة.

ومع ذلك، فإن استخدام array_diff_assoc() مباشرة على هذه المصفوفات لن يعمل كما هو متوقع لأنه يقارن مفاتيح الصفيف الأساسية، وليس محتوى الصفوف المتداخلة. لمقارنة الصفوف المتداخلة، يمكننا أولاً تحويلها إلى مصفوفات أحادية البعد باستخدام array_map() والدالة serialize().

$serializedPageids = array_map('serialize', $pageids);
$serializedParentpage = array_map('serialize', $parentpage);

بعد تحويلها، يمكننا استخدام array_diff() لمقارنة هذه المصفوفات أحادية البعد والحصول على الفرق.

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

أخيرًا، يمكننا تحويل الفرق المتسلسل العودة إلى المصفوفات متعددة الأبعاد باستخدام array_map() ووظيفة unserialize().

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

تسمح لنا هذه العملية بمقارنة محتوى الصفوف المتداخلة واستخرج الصفوف الموجودة في $pageids ولكن ليس في $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',
  ),
)
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3