continue في PHP

من موسوعة حسوب
< PHP

(PHP 4, PHP 5, PHP 7)

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

تأخذ continue معاملًا عدديًّا اختياريًا يمكن من خلاله تحديد عدد الحلقات التكرارية المحيطة بها والتي يجب تجاوزها إلى النهاية. القيمة الافتراضية هي 1 والتي تعني الانتقال إلى نهاية الحلقة الحالية.

ملاحظة: تعدّ عبارة switch في PHP من الحلقات التكرارية عند الحديث عن continue. تسلك continue سلوك break (في حال عدم توفر المعاملات). إن استُخدمت switch داخل حلقة تكرارية سيؤدي استخدام continue 2 إلى الانتقال إلى الدورة التالية في الحلقة الخارجية.

<?php
while (list($key, $value) = each($arr)) {
    if (!($key % 2)) {
 // تجاوز الأعداد الزوجية
        continue;
    }
    do_something_odd($value);
}

$i = 0;
while ($i++ < 5) {
    echo "Outer<br />\n";
    while (1) {
        echo "Middle<br />\n";
        while (1) {
            echo "Inner<br />\n";
            continue 3;
        }
        echo "This never gets output.<br />\n";
    }
    echo "Neither does this.<br />\n";
}
?>

حذف الفاصلة المنقوطة بعد continue قد يؤدي إلى حدوث بعض الأخطاء. إليك مثالًا لما لا يجب عليك القيام به:

<?php
for ($i = 0; $i < 5; ++$i) {
    if ($i == 2)
        continue
    print "$i\n";
}
?>

يمكنك أن تتوقع أن الشيفرة السابقة ستعطي النتيجة التالية:

0
1
3
4

إلا أنّ مخرجات هذه الشيفرة في الإصدارات السابقة لإصدار 5.4.0 هي:

2

تعامل اللغة التعبير continue print "$i\n";‎ على أنّه تعبير واحد؛ لذا تستدعى الدالة print في حالة واحدة فقط وهي عندما يكون التعبير ‎ $i == 2صحيحًا (تمرّر القيمة المعادة من الدالة print كمعامل رقمي للتعبير continue).

ملاحظة: منذ الإصدار 5.4.0 سيطلق المثال السابق خطأً من النوع E_COMPLIE_ERROR.

سجل التغييرات

الإصدار الوصف
5.4.0 لم تعد continue 0;‎ مدعومةً في هذا الإصدار. في الإصدارات السابقة كانت هذه العبارة تفسر كما تفسر continue 1;‎
5.4.0 إلغاء القدرة على تمرير المتغيرات كمعاملات رقمية، مثال:

$num = 2; continue $num;‎

مصادر