انتقل إلى محتوى الدرس
الدرس 26
دورة PHP

التحكم في مسار الحلقات عبر break و continue في PHPPHP Break and Continue Statements

تعلّم التحكم في مسار الحلقات عبر break و continue في PHP بأسلوب PHP 8 الحديث مع أمثلة عملية وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
3
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

عند البحث عن قيمة معينة داخل حلقة تكرار، فإن الاستمرار في الدوران بعد العثور على الهدف يهدر موارد المعالج دون فائدة. يقوم الأمر break; بإنهاء الحلقة الحالية (for أو while أو do...while) فوراً، وينقل التنفيذ إلى أول سطر برمجي يأتي بعد قوس إغلاق الحلقة:

مخطط يقارن الأمر break والأمر continue والخروج متعدد المستويات break 2 في PHP
PHP
<?php
for ($port = 8000; $port <= 8005; $port++) {
    if ($port === 8002) {
        echo "Available port found: " . $port;
        break;
    }
}

على عكس الأمر break الذي ينهي الحلقة بالكامل، يقوم الأمر continue; بتخطي الدورة الحالية فقط؛ فيتجاهل الأسطر المتبقية داخل جسم الحلقة لهذه الدورة وينتقل مباشرة إلى الدورة التالية (بتنفيذ خطوة الزيادة $i++ في حلقة for أو إعادة فحص الشرط في حلقة while):

PHP
<?php
// Print only odd numbers from 1 to 6
for ($n = 1; $n <= 6; $n++) {
    if ($n % 2 === 0) {
        continue;
    }
    echo "Odd: " . $n . "\n";
}

يؤثر كل من break; وcontinue; افتراضياً على الحلقة الداخلية الأقرب فقط (وهو ما يكافئ break 1;). وتتميز لغة PHP بدعم تمرير عدد صحيح ثابت بعد الأمر — مثل break 2; أو continue 2; — للخروج من حلقتين متداخلتين معاً في خطوة واحدة:

PHP
<?php
for ($floor = 1; $floor <= 3; $floor++) {
    for ($room = 1; $room <= 4; $room++) {
        if ($floor === 2 && $room === 2) {
            echo "Target Room 2-2 located!\n";
            break 2;
        }
    }
}

كما تحافظ شروط الحراسة المبكرة على نظافة الدوال، فإن وضع فحص continue; في بداية جسم الحلقة يساعد على استبعاد الدورات غير المطلوبة فوراً، ويبقي الكود الأساسي للحلقة مسطحاً وواضح القراءة دون تداخل عميق لجمل if:

مخطط تدفق التنفيذ العملي لقسم تصفية القيم غير الصالحة بالحلقات في لغة PHP
PHP
<?php
$totalScore = 0;

for ($round = 1; $round <= 5; $round++) {
    // Skip warmup round #1
    if ($round === 1) {
        continue;
    }
    $totalScore += ($round * 10);
}
echo "Qualified Score: " . $totalScore;

انتبه لقاعدة مهمة في PHP 8 عند وضع جملة switch داخل حلقة تكرار: يعامل محرك PHP بنية switch كطبقة مستوى خاص عند حساب break وcontinue. لذلك فإن كتابة continue; بمفردها داخل switch تخرج من switch فقط وتُطلق تحذيراً في PHP 8! ولتخطي دورة الحلقة الخارجية من داخل switch، اكتب continue 2;:

PHP
<?php
for ($step = 1; $step <= 3; $step++) {
    switch ($step) {
        case 2:
            continue 2; // Skips outer for-loop iteration #2
    }
    echo "Executed Step #" . $step . "\n";
}

يلخص الجدول المرجعي التالي أوامر التحكم في مسار الحلقات في PHP 8.4:

الأمر البرمجيتأثيره على الحلقةالاستخدام الهندسي الشائع
break;ينهي الحلقة الحالية بالكامل فوراًالتوقف عن البحث فور العثور على الهدف المطلوب
continue;يتخطى بقية الدورة الحالية وينتقل للتاليةتصفية وتجاوز الدورات غير الصالحة
break 2;يخرج من مستويين من الحلقات المتداخلة معاًإيقاف البحث في شبكة صفوف وأعمدة ثنائية الأبعاد
continue 2;يتخطى دورة الحلقة الخارجية من داخل حلقة أو switchالانتقال للدورة التالية للحلقة عند وجود switch بداخلها
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس إيقاف الحلقات فوراً بالأمر break، وتخطي الدورة الحالية بالأمر continue، والخروج من الحلقات المتداخلة عبر break 2، واستخدام continue 2 عند وجود جملة switch داخل الحلقة. الخطوة التالية: انتقل الآن إلى الوحدة الرابعة والدرس العشرين «المصفوفات المفهرسة وإنشاؤها وتعديل عناصرها في PHP» لتخزين مجموعات البيانات ومعالجتها.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Break & Continue التحكم بالحلقات
تعلّم التحكم في مسار الحلقات عبر break و continue في PHP بأسلوب PHP 8 الحديث مع أمثلة عملية وتطبيقات تفاعلية.
للمراجعة
02 Stopping Loops Early with break إيقاف الحلقة فوراً بالأمر break
المفهوم الأساسي لقسم إيقاف الحلقة فوراً بالأمر break في لغة PHP الحديثة.
للمراجعة
03 Skipping Iterations with continue تخطي الدورة الحالية بـ continue
الصياغة البرمجية والتطبيق العملي المباشر لقسم تخطي الدورة الحالية بـ continue.
للمراجعة
04 Breaking Nested Loops by Level الخروج من الحلقات المتداخلة بالعمق
قواعد التحقق وأفضل الممارسات القياسية الخاصة بقسم الخروج من الحلقات المتداخلة بالعمق.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 PHP PHP
PHP: Hypertext Preprocessor
لغة البرمجة النصية على جانب الخادم لبناء تطبيقات الويب الديناميكية وواجهات البرمجة.
للمراجعة
02 CLI CLI
Command-Line Interface
واجهة سطر الأوامر التي تتيح تشغيل ملفات PHP مباشرة عبر الطرفية.
للمراجعة
03 FPM FPM
FastCGI Process Manager
مدير عمليات FastCGI عالي الأداء لمعالجة طلبات خادم الويب في PHP.
للمراجعة
04 HTML HTML
HyperText Markup Language
لغة الترميز القياسية التي يولدها محرك PHP ويرسلها إلى متصفح العميل بعد التنفيذ.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. أنشئ ملف PHP محلياً ونفّذ المثال البرمجي المشروح في قسم إيقاف الحلقة فوراً بالأمر break للتحقق من المخرجات.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم تخطي الدورة الحالية بـ continue وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ماذا يفعل الأمر break; عند تنفيذه داخل حلقة for أو while في لغة PHP؟

ينهي الأمر break; الحلقة الحالية بالكامل فوراً وينتقل إلى أول سطر بعد الحلقة.

02

ماذا يفعل الأمر continue; عند تنفيذه داخل حلقة for في لغة PHP؟

يتخطى الأمر continue; بقية الأسطر في الدورة الحالية وينتقل إلى خطوة التحديث والدورة التالية.

03

كيف تخرج فوراً من حلقة for داخلية وحلقة for الخارجية المحيطة بها معاً في خطوة واحدة بلغة PHP؟

يخرج الأمر break 2; من مستويين متداخلين من الحلقات في آنٍ واحد.

04

في حلقة while ($i < 5)، قد يؤدي تنفيذ الأمر continue; قبل زيادة العداد $i إلى حدوث حلقة لا نهائية لأن التنفيذ يقفز مباشرة لفحص الشرط دون تحديث $i.

صواب؛ لأن حلقة while تقفز مباشرة لفحص الشرط عند تنفيذ continue، لذا يجب تحديث العداد قبلها.

05

عند وضع جملة switch داخل حلقة for، أي أمر يتخطى الدورة الحالية لحلقة for الخارجية من داخل أحد فروع case؟

لأن جملة switch تُحتسب كمستوى أول، يجب استخدام continue 2; لتخطي دورة الحلقة الخارجية.

06

في PHP 8، يُسمح بتمرير متغير ديناميكي مثل break $depth; بدلاً من كتابة رقم صحيح ثابت.

خطأ؛ يشترط محرك PHP 8 أن يكون مستوى break أو continue عدداً صحيحاً موجباً ثابتاً وقت الترجمة.

07

ما مخرجات الحلقة التالية: for ($i = 1; $i <= 4; $i++) { if ($i === 2) { continue; } echo $i; }؟

يتم تخطي الدورة رقم 2 فقط بسبب continue، فتُطبع الأرقام 1 و 3 و 4 (134).

08

اختر جميع العبارات الصحيحة حول الأمرين break و continue في PHP 8.4:

ينهي break الحلقة، ويتخطى continue الدورة الحالية، ويدعم كلاهما تحديد رقم المستوى الثابت في الحلقات المتداخلة.