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

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

جزء من قسم المنطق وتدفق التنفيذ في رحلة PHP على Coddy. الدرس 30 من 68.

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

تتكرر الحلقة الخارجية عبر كل row من 2D array، بينما تعالج الحلقة الداخلية كل عنصر ضمن row الحالية. إليك كيفية عمل ذلك باستخدام حلقة 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";
    }
}
?>

يُعد نمط الحلقة المتداخلة هذا أساسيًا لمعالجة المصفوفات ثنائية الأبعاد بالكامل، سواء كنت تعرض البيانات أو تُجري العمليات الحسابية أو تبحث عن قيم محددة عبر بنية grid بأكملها.

challenge icon

التحدي

سهل

ستتلقى input واحدًا: مصفوفة ثنائية الأبعاد تمثل ترتيب seating في فصل دراسي بتنسيق JSON. تمثل كل مصفوفة داخلية row من seats، ويحتوي كل عنصر على اسم طالب أو empty string للمقاعد الشاغرة. Read input، وحوّل سلسلة JSON إلى 2D array، واستخدم nested loops من أجل iterate عبر ترتيب seating بالكامل، واطبع اسم كل طالب مع موضعه بالتنسيق: Row X, Seat Y: Name

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

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

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

جرّب بنفسك

<?php
// اقرأ إدخال JSON
$input = trim(fgets(STDIN));

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

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


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

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

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم PHP عبر الإنترنت