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

كيف يمكن استخدام العودية لإنشاء شجرة قائمة متداخلة من قاعدة بيانات ذات فئات أصلية؟

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

How can recursion be used to generate a nested menu tree from a database with parent categories?

العودية لإنشاء شجرة القائمة

في حالتك، لديك بنية قاعدة بيانات حيث تحتوي الفئات على حقل "جذر" يشير إلى الفئة الأصلية الخاصة بها . تتضمن مخرجات HTML التي تريدها قوائم متداخلة تمثل التسلسل الهرمي للفئة. ولتحقيق ذلك، يمكن استخدام دالة PHP العودية.

إليك مثال للوظيفة:

function recurse($categories, $parent = null, $level = 0) {
    $ret = '
    '; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '
  • ' . $category['name'] . '

    '; $ret .= $this->recurse($categories, $category['id'], $level 1); $ret .= '
  • '; } } return $ret . '
'; }

تفترض هذه الوظيفة أن الفئات الجذرية تحتوي على حقل "جذر" بقيمة فارغة. إنه يتكرر عبر الفئات، ويحدد الفئات الفرعية بناءً على حقل "الجذر" الخاص بها، ويبني HTML باستخدام قوائم متداخلة.

لاستخدام هذه الوظيفة:

  1. استعلم عن قاعدة البيانات الخاصة بك لـ مصفوفة فئات متعددة الأبعاد.
  2. استدعاء دالة التكرار مع مصفوفة الفئات وقيمة فارغة كمعلمة أصل.
  3. قم بتعيين القيمة التي تم إرجاعها إلى متغير (على سبيل المثال، $Tree).
  4. قم بتكرار المتغير $Tree لعرض شجرة القائمة المتداخلة.

اختياريًا، يمكنك تعديل الوظيفة لتجنب القوائم الفارغة عن طريق التحقق مما إذا كانت الفئة تحتوي على فئات فرعية قبل إنشاء القائمة:

function recurse($categories, $parent = null, $level = 0) {
    $ret = '
    '; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '
  • ' . $category['name'] . '

    '; $sub = $this->recurse($categories, $category['id'], $level 1); if ($sub != '
      ') { $ret .= $sub; } $ret .= '
    • '; } } return $ret . '
    '; }

    لن تقوم هذه الوظيفة المعدلة بإنشاء قوائم إلا إذا كانت الفئة تحتوي على طفل واحد على الأقل.

    أحدث البرنامج التعليمي أكثر>

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

    Copyright© 2022 湘ICP备2022001581号-3