جملة Continue
جزء من قسم Fundamentals في رحلة PHP على Coddy — الدرس 52 من 71.
بينما تقوم break بالخروج من الحلقة تماماً، قد ترغب أحياناً في تخطي التكرار الحالي فقط والانتقال إلى التكرار التالي. هذا هو بالضبط ما تفعله جملة continue.
عندما يواجه PHP الكلمة المحجوزة continue، فإنه ينتقل فوراً إلى التكرار التالي للحلقة، متخطياً أي كود متبقٍ في التكرار الحالي.
<?php
for ($i = 1; $i <= 5; $i++) {
if ($i === 3) {
continue;
}
echo $i . "\n";
}
?>هذا ينتج:
1
2
4
5لاحظ أن الرقم 3 مفقود. عندما يساوي $i الرقم 3، فإن جملة continue تتخطى echo وتنتقل مباشرة إلى التكرار التالي حيث يصبح $i يساوي 4.
حالة استخدام شائعة هي تصفية القيم غير المرغوب فيها أثناء معالجة مصفوفة:
<?php
$numbers = [10, -5, 8, -3, 12];
foreach ($numbers as $num) {
if ($num < 0) {
continue;
}
echo $num . "\n";
}
?>يقوم هذا بطباعة الأرقام الموجبة فقط: 10، و8، و12. يتم تخطي القيم السالبة، لكن الحلقة تستمر في العمل عبر جميع العناصر.
الفرق الرئيسي: break يوقف الحلقة تماماً، بينما continue يتخطى فقط إلى التكرار التالي.
التحدي
سهلاقرأ سطرين من المدخلات:
- قائمة من الأعداد الصحيحة مفصولة بفاصلة (على سبيل المثال،
3,7,12,5,8,20,15) - رقم القاسم (divisor)
استخدم حلقة foreach للتكرار عبر المصفوفة. استخدم continue لتخطي أي أرقام تقبل القسمة على القاسم المعطى. اطبع جميع الأرقام الأخرى، كل منها في سطر منفصل.
المثال 1:
إذا كانت المدخلات هي 1,2,3,4,5,6,7,8,9,10 و 3، فيجب أن تكون المخرجات:
1
2
4
5
7
8
10(تم تخطي الأرقام 3 و 6 و 9 لأنها تقبل القسمة على 3)
المثال 2:
إذا كانت المدخلات هي 10,15,20,25,30 و 5، فيجب أن تكون المخرجات:
(جميع الأرقام تقبل القسمة على 5، لذا لن يتم طباعة أي شيء)
المثال 3:
إذا كانت المدخلات هي 7,14,21,10,5 و 7، فيجب أن تكون المخرجات:
10
5ورقة مرجعية
تقوم جملة continue بتخطي التكرار الحالي للحلقة والانتقال إلى التكرار التالي، دون الخروج من الحلقة تماماً.
مثال أساسي مع حلقة for:
<?php
for ($i = 1; $i <= 5; $i++) {
if ($i === 3) {
continue;
}
echo $i . "\n";
}
?>ينتج عن هذا 1، 2، 4، 5 (مع تخطي 3).
استخدام continue مع foreach لتصفية قيم المصفوفة:
<?php
$numbers = [10, -5, 8, -3, 12];
foreach ($numbers as $num) {
if ($num < 0) {
continue;
}
echo $num . "\n";
}
?>يقوم هذا بطباعة الأرقام الموجبة فقط (10، 8، 12)، مع تخطي القيم السالبة.
الفرق الرئيسي: تخرج break من الحلقة تماماً، بينما تقوم continue فقط بالتخطي إلى التكرار التالي.
جرّب بنفسك
<?php
// قراءة المدخلات
$input = trim(fgets(STDIN));
$divisor = intval(trim(fgets(STDIN)));
// تحويل السلسلة النصية المفصولة بفاصلة إلى مصفوفة من الأعداد الصحيحة
$numbers = array_map('intval', explode(',', $input));
// TODO: اكتب كودك أدناه
// استخدم حلقة foreach للمرور عبر $numbers
// استخدم continue لتخطي الأعداد التي تقبل القسمة على $divisor
// اطبع جميع الأعداد الأخرى، كل واحد في سطر منفصل
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4معاملات المقارنة والمنطق
معاملات المقارنةالمساواة والتطابقالمعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيط2المتغيرات وأنواع البيانات
الأرقامالنصوص وعلامات الاقتباسالقيم المنطقية (Booleans)قواعد التسميةملخص - تهيئة المتغيراتالمتغيرات الفارغةدمج النصوصاستقبال مدخلات المستخدمتحويل أنواع البيانات5المنطق الشرطي
جملة Ifجملة If - Elseالعامل الثلاثي (Ternary Operator)عامل Null Coalescingجملة Switchمراجعة - اتخاذ القرارات8الحلقات التكرارية
حلقة Forحلقة Whileحلقة Foreachالتكرار باستخدام المفاتيح والقيمجملة Breakجملة Continueمراجعة - التكرار عبر البيانات3المعاملات الأساسية
المعاملات الحسابيةمعامل باقي القسمةمعامل الأسالتعيين المركبالزيادة والنقصانأسبقية المعاملاتمراجعة - الحسابات البسيطةمعاملات النصوص