Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التكرار باستخدام الحلقات المتداخلة

جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 30 من 68.

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

تنتقل الحلقة الخارجية عبر كل صف من صفوف المصفوفة ثنائية الأبعاد، بينما تعالج الحلقة الداخلية كل عنصر داخل الصف الحالي. إليك كيفية عمل ذلك باستخدام حلقة foreach:

<?php
$schedule = [
    ["Meeting", "Lunch", "Presentation"],
    ["Training", "Review", "Planning"],
    ["Workshop", "Break", "Demo"]
];

foreach ($schedule as $day) {
    foreach ($day as $appointment) {
        echo $appointment . "\n";
    }
}
?>

يمكنك أيضًا استخدام حلقات for التقليدية عندما تحتاج إلى مزيد من التحكم في الفهارس. يوفر لك هذا النهج إمكانية الوصول إلى كل من مواضع الصفوف والأعمدة:

<?php
for ($row = 0; $row < count($schedule); $row++) {
    for ($col = 0; $col < count($schedule[$row]); $col++) {
        echo "Day " . ($row + 1) . ", Time " . ($col + 1) . ": " . $schedule[$row][$col] . "\n";
    }
}
?>

يعد نمط الحلقات المتداخلة هذا أساسياً لمعالجة 2D arrays بشكل كامل، سواء كنت تعرض البيانات، أو تجري الحسابات، أو تبحث عن قيم محددة عبر هيكل الشبكة بالكامل.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

challenge icon

التحدي

سهل

ستتلقى مدخلاً واحداً: مصفوفة ثنائية الأبعاد (2D array) تمثل ترتيب الجلوس في الفصل الدراسي بتنسيق JSON. تمثل كل مصفوفة داخلية صفاً من المقاعد، ويحتوي كل عنصر إما على اسم طالب أو سلسلة نصية فارغة للمقاعد الشاغرة. اقرأ المدخلات، وقم بتحويل سلسلة JSON إلى مصفوفة ثنائية الأبعاد، واستخدم حلقات متداخلة (nested loops) للتكرار عبر ترتيب الجلوس بالكامل، واطبع اسم كل طالب مع موقعه بالتنسيق التالي: Row X, Seat Y: Name

تخطَّ المقاعد الشاغرة (السلاسل النصية الفارغة) واطبع فقط المعلومات الخاصة بالمقاعد المشغولة. يجب ترقيم الصفوف والمقاعد بدءاً من 1 (وليس 0).

تنسيق المدخلات: سطر واحد يحتوي على مصفوفة JSON تمثل ترتيب الجلوس (مثال: [["Alice","Bob",""],["","Charlie","Diana"],["Eve","","Frank"]])

المخرجات المتوقعة: طباعة كل مقعد مشغول في سطر منفصل بالتنسيق Row X, Seat Y: Name، حيث X هو رقم الصف و Y هو رقم المقعد (كلاهما يبدأ من 1)

ورقة مرجعية

استخدم الحلقات المتداخلة لمعالجة كل عنصر في مصفوفة ثنائية الأبعاد. تمر الحلقة الخارجية عبر الصفوف، بينما تعالج الحلقة الداخلية العناصر داخل كل صف.

استخدام حلقات foreach:

<?php
$schedule = [
    ["Meeting", "Lunch", "Presentation"],
    ["Training", "Review", "Planning"],
    ["Workshop", "Break", "Demo"]
];

foreach ($schedule as $day) {
    foreach ($day as $appointment) {
        echo $appointment . "\n";
    }
}
?>

استخدام حلقات for التقليدية للوصول إلى الفهرس:

<?php
for ($row = 0; $row < count($schedule); $row++) {
    for ($col = 0; $col < count($schedule[$row]); $col++) {
        echo "Day " . ($row + 1) . ", Time " . ($col + 1) . ": " . $schedule[$row][$col] . "\n";
    }
}
?>

جرّب بنفسك

<?php
// قراءة مدخلات JSON
$input = trim(fgets(STDIN));

// تحويل نص JSON إلى مصفوفة ثنائية الأبعاد
$seating = (array)json_decode($input, true);

// المهام المطلوبة: اكتب الكود الخاص بك أدناه
// استخدم الحلقات المتداخلة للتكرار عبر الصفوف والمقاعد
// تذكر تخطي المقاعد الفارغة وترقيم الصفوف/المقاعد بدءاً من 1


?>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow