الفرق بين المراجعتين لصفحة: «PHP/continue»
ط استبدال النص - 'PHP/Control Structures/switch' ب'PHP/switch' |
ط استبدال النص - 'PHP\/Function\/([^|]*)' ب'PHP/$1' |
||
سطر 59: | سطر 59: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
تعامل اللغة التعبير <code>continue print "$i\n";</code> على أنّه تعبير واحد؛ لذا تستدعى الدالة <code>print</code> في حالة واحدة فقط وهي عندما يكون التعبير <code>$i == 2</code>صحيحًا (تمرّر القيمة المعادة من الدالة <code>[[PHP | تعامل اللغة التعبير <code>continue print "$i\n";</code> على أنّه تعبير واحد؛ لذا تستدعى الدالة <code>print</code> في حالة واحدة فقط وهي عندما يكون التعبير <code>$i == 2</code>صحيحًا (تمرّر القيمة المعادة من الدالة <code>[[PHP/print|print]]</code> كمعامل رقمي للتعبير <code>continue</code>). | ||
ملاحظة: منذ الإصدار 5.4.0 سيطلق المثال السابق خطأً من النوع E_COMPLIE_ERROR. | ملاحظة: منذ الإصدار 5.4.0 سيطلق المثال السابق خطأً من النوع E_COMPLIE_ERROR. |
مراجعة 03:42، 4 أبريل 2018
(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 | إلغاء القدرة على تمرير المتغيرات كمعاملات رقمية، مثال:
|