الفرق بين المراجعتين لصفحة: «PHP/continue»

من موسوعة حسوب
< PHP
ط استبدال النص - 'PHP/Control Structures/break' ب'PHP/break'
تعديلات طفيفة
 
(3 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة)
سطر 2: سطر 2:
(PHP 4, PHP 5, PHP 7)
(PHP 4, PHP 5, PHP 7)


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


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


ملاحظة: تعدّ عبارة <code>[[PHP/Control Structures/switch|switch]]</code> في PHP من الحلقات التكرارية عند الحديث عن <code>continue</code>. تسلك <code>continue</code> سلوك <code>[[PHP/break|break]]</code> (في حال عدم توفر المعاملات). إن استُخدمت <code>switch</code> داخل حلقة تكرارية سيؤدي استخدام <code>continue 2</code> إلى الانتقال إلى الدورة التالية في الحلقة الخارجية.
ملاحظة: تعدّ عبارة <code>[[PHP/switch|switch]]</code> في PHP من الحلقات التكرارية عند الحديث عن <code>continue</code>. تسلك <code>continue</code> سلوك <code>[[PHP/break|break]]</code> (في حال عدم توفر المعاملات). إن استُخدمت <code>switch</code> داخل حلقة تكرارية سيؤدي استخدام <code>continue 2</code> إلى الانتقال إلى الدورة التالية في الحلقة الخارجية.


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
سطر 46: سطر 46:


يمكنك أن تتوقع أن الشيفرة السابقة ستعطي النتيجة التالية:
يمكنك أن تتوقع أن الشيفرة السابقة ستعطي النتيجة التالية:
<syntaxhighlight lang="php">
<syntaxhighlight lang="text">


0
0
سطر 54: سطر 54:
</syntaxhighlight>
</syntaxhighlight>
إلا أنّ مخرجات هذه الشيفرة في الإصدارات السابقة لإصدار 5.4.0 هي:
إلا أنّ مخرجات هذه الشيفرة في الإصدارات السابقة لإصدار 5.4.0 هي:
<syntaxhighlight lang="php">
<syntaxhighlight lang="text">


2
2
</syntaxhighlight>
</syntaxhighlight>


تعامل اللغة التعبير <code>continue print "$i\n";</code>‎ على أنّه تعبير واحد؛ لذا تستدعى الدالة <code>print</code> في حالة واحدة فقط وهي عندما يكون التعبير ‎ <code>$i == 2</code>صحيحًا (تمرّر القيمة المعادة من الدالة <code>[[PHP/Function/print|print]]</code> كمعامل رقمي للتعبير <code>continue</code>).
تعامل اللغة التعبير <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.

المراجعة الحالية بتاريخ 15:49، 6 يونيو 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 إلغاء القدرة على تمرير المتغيرات كمعاملات رقمية، مثال:

$num = 2; continue $num;‎

مصادر