في هذا الدرس 6تصفّح المواضيع
عند البحث عن قيمة معينة داخل حلقة تكرار، فإن الاستمرار في الدوران بعد العثور على الهدف يهدر موارد المعالج دون فائدة. يقوم الأمر break; بإنهاء الحلقة الحالية (for أو while أو do...while) فوراً، وينقل التنفيذ إلى أول سطر برمجي يأتي بعد قوس إغلاق الحلقة:
<?php
for ($port = 8000; $port <= 8005; $port++) {
if ($port === 8002) {
echo "Available port found: " . $port;
break;
}
}
على عكس الأمر break الذي ينهي الحلقة بالكامل، يقوم الأمر continue; بتخطي الدورة الحالية فقط؛ فيتجاهل الأسطر المتبقية داخل جسم الحلقة لهذه الدورة وينتقل مباشرة إلى الدورة التالية (بتنفيذ خطوة الزيادة $i++ في حلقة for أو إعادة فحص الشرط في حلقة while):
<?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
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
$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
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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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 ويرسلها إلى متصفح العميل بعد التنفيذ.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
أنشئ ملف PHP محلياً ونفّذ المثال البرمجي المشروح في قسم إيقاف الحلقة فوراً بالأمر break للتحقق من المخرجات.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم تخطي الدورة الحالية بـ continue وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ماذا يفعل الأمر break; عند تنفيذه داخل حلقة for أو while في لغة PHP؟
ينهي الأمر break; الحلقة الحالية بالكامل فوراً وينتقل إلى أول سطر بعد الحلقة.
ماذا يفعل الأمر continue; عند تنفيذه داخل حلقة for في لغة PHP؟
يتخطى الأمر continue; بقية الأسطر في الدورة الحالية وينتقل إلى خطوة التحديث والدورة التالية.
كيف تخرج فوراً من حلقة for داخلية وحلقة for الخارجية المحيطة بها معاً في خطوة واحدة بلغة PHP؟
يخرج الأمر break 2; من مستويين متداخلين من الحلقات في آنٍ واحد.
في حلقة while ($i < 5)، قد يؤدي تنفيذ الأمر continue; قبل زيادة العداد $i إلى حدوث حلقة لا نهائية لأن التنفيذ يقفز مباشرة لفحص الشرط دون تحديث $i.
صواب؛ لأن حلقة while تقفز مباشرة لفحص الشرط عند تنفيذ continue، لذا يجب تحديث العداد قبلها.
عند وضع جملة switch داخل حلقة for، أي أمر يتخطى الدورة الحالية لحلقة for الخارجية من داخل أحد فروع case؟
لأن جملة switch تُحتسب كمستوى أول، يجب استخدام continue 2; لتخطي دورة الحلقة الخارجية.
في PHP 8، يُسمح بتمرير متغير ديناميكي مثل break $depth; بدلاً من كتابة رقم صحيح ثابت.
خطأ؛ يشترط محرك PHP 8 أن يكون مستوى break أو continue عدداً صحيحاً موجباً ثابتاً وقت الترجمة.
ما مخرجات الحلقة التالية: for ($i = 1; $i <= 4; $i++) { if ($i === 2) { continue; } echo $i; }؟
يتم تخطي الدورة رقم 2 فقط بسبب continue، فتُطبع الأرقام 1 و 3 و 4 (134).
اختر جميع العبارات الصحيحة حول الأمرين break و continue في PHP 8.4:
ينهي break الحلقة، ويتخطى continue الدورة الحالية، ويدعم كلاهما تحديد رقم المستوى الثابت في الحلقات المتداخلة.