انتقل إلى محتوى الدرس
الدرس 24
دورة PHP

حلقات التكرار الشرطية while و do while في PHPPHP While and Do While Loops

تعلّم حلقات التكرار الشرطية while و do while في PHP بأسلوب PHP 8 الحديث مع أمثلة عملية وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
3
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

تُنفذ حلقة while كتلة من الأوامر البرمجية بشكل متكرر طالما أن شرطها المنطقي يساوي true. ولأن محرك PHP يفحص الشرط قبل الدخول في كل دورة، تُعرف بأنها حلقة ذات فحص مسبق؛ فإذا كان الشرط يساوي false منذ البداية، فلن يعمل جسم الحلقة أبداً:

مخطط يقارن حلقة while التي تفحص الشرط أولاً بحلقة do-while التي تنفذ مرة واحدة على الأقل
PHP
<?php
$counter = 1;

while ($counter <= 4) {
    echo "Step " . $counter . "\n";
    $counter++;
}

تعتمد كل حلقة while منضبطة على ثلاثة أركان متكاملة:

  • التهيئة الابتدائية: تعريف متغير البداية قبل الحلقة (مثل $ticketsLeft = 3;).
  • شرط الاستمرار: الفحص المنطقي المكتوب بين قوسي while ($ticketsLeft > 0).
  • تحديث العداد: تعديل قيمة المتغير داخل جسم الحلقة (مثل $ticketsLeft--;) للوصول الحتمي إلى نقطة التوقف.
PHP
<?php
$ticketsLeft = 3;

while ($ticketsLeft > 0) {
    echo "Issued ticket. Remaining: " . $ticketsLeft . "\n";
    $ticketsLeft--;
}
echo "All tickets sold out.";

إذا نسيت تحديث متغير الشرط داخل جسم حلقة while — أو عدلته في الاتجاه الخاطئ — فسيظل الشرط يساوي true إلى الأبد، مما يسبب حلقة لا نهائية (Infinite Loop) تستنزف المعالج حتى يوقفها الخادم. لذلك تأكد دائماً من تقدم العداد نحو شرط التوقف في كل دورة:

PHP
<?php
$balance = 100;
$withdraw = 35;
$safetySteps = 0;

while ($balance >= $withdraw && $safetySteps < 10) {
    $balance -= $withdraw;
    $safetySteps++;
}
echo "Remaining Balance: " . $balance;

تعكس حلقة do...while ترتيب التنفيذ؛ إذ تنفذ الأوامر داخل كتلة do { ... } أولاً ثم تفحص الشرط while ($condition); في نهاية الدورة. وبذلك تضمن حلقة do...while تشغيل الكود مرة واحدة على الأقل حتى لو كان الشرط خاطئاً منذ البداية. وانتبه للفاصلة المنقوطة الإلزامية ; في نهاية السطر:

مخطط تدفق التنفيذ العملي لقسم حلقة التنفيذ المضمون do while في لغة PHP
PHP
<?php
$attempt = 1;
$maxRetries = 0;

do {
    echo "Running initial connection attempt #" . $attempt . "\n";
    $attempt++;
} while ($attempt <= $maxRetries);

عند تضمين حلقة while داخل قوالب HTML، توفر لغة PHP الصياغة البديلة بالنقطتين؛ حيث يُستبدل قوس الفتح المعقوف { بنقطتين رأسيتين : ويُستبدل قوس الإغلاق } بالكلمة المحجوزة endwhile; لتوضيح بداية ونهاية الحلقة وسط وسوم HTML:

PHP
<?php $row = 1; ?>
<ul>
<?php while ($row <= 3): ?>
  <li>Item Row #<?php echo $row; ?></li>
  <?php $row++; ?>
<?php endwhile; ?>
</ul>

يقارن الجدول المرجعي التالي بين حلقة while وحلقة do...while في PHP 8.4:

وجه المقارنةحلقة while ($cond) { ... }حلقة do { ... } while ($cond);
توقيت فحص الشرطقبل بدء كل دورة (فحص مسبق)بعد انتهاء كل دورة (فحص لاحق)
الحد الأدنى لعدد مرات التنفيذصفر (0) إذا بدأ الشرط خاطئاًمرة واحدة (1) مضمونة على الأقل
الفاصلة المنقوطة في النهايةلا توضع بعد قوس الإغلاق }إلزامية بعد while ($cond);
صيغة القوالب البديلةمدعومة عبر while (...): ... endwhile;غير مدعومة (تُكتب بالأقواس المعقوفة فقط)
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس كتابة حلقات while الشرطية، وضبط التهيئة والشرط وتحديث العداد لمنع الحلقات اللانهائية، واستخدام do...while للتنفيذ المضمون لمرة واحدة على الأقل، وتوظيف صيغة القوالب endwhile;. الخطوة التالية: انتقل الآن إلى الدرس الثامن عشر «حلقة التكرار المحددة for في PHP» لكتابة الحلقات الرقمية المحددة بسطر رأس واحد.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 While Loops حلقات while
تعلّم حلقات التكرار الشرطية while و do while في PHP بأسلوب PHP 8 الحديث مع أمثلة عملية وتطبيقات تفاعلية.
للمراجعة
02 Condition First while Loop حلقة التكرار الشرطية while
المفهوم الأساسي لقسم حلقة التكرار الشرطية while في لغة PHP الحديثة.
للمراجعة
03 Loop Counter and Termination عداد الحلقة وشرط التوقف
الصياغة البرمجية والتطبيق العملي المباشر لقسم عداد الحلقة وشرط التوقف.
للمراجعة
04 Preventing Infinite While Loops الوقاية من الحلقات اللانهائية
قواعد التحقق وأفضل الممارسات القياسية الخاصة بقسم الوقاية من الحلقات اللانهائية.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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 ويرسلها إلى متصفح العميل بعد التنفيذ.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. أنشئ ملف PHP محلياً ونفّذ المثال البرمجي المشروح في قسم حلقة التكرار الشرطية while للتحقق من المخرجات.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم عداد الحلقة وشرط التوقف وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

كم مرة يتم تنفيذ جسم حلقة while ($count < 5) القياسية إذا كانت قيمة $count الابتدائية تساوي 10 قبل الحلقة؟

لأن الشرط 10 < 5 خاطئ منذ الفحص الأول، لن يتم تنفيذ جسم حلقة while ولا مرة (0 مرات).

02

ماذا يحدث إذا كانت حلقة while ($i <= 5) تطبع قيمة $i في كل دورة دون زيادة أو تغيير قيمة $i داخل جسم الحلقة؟

عدم تحديث متغير الحلقة يبقي الشرط صحيحاً دائماً مما يسبب حلقة لا نهائية.

03

ما الفارق السلوكي الجوهري بين حلقة do...while وحلقة while القياسية في PHP؟

تنفذ حلقة do...while الأوامر أولاً ثم تفحص الشرط في النهاية، مما يضمن تشغيلها مرة واحدة على الأقل.

04

يجب إنهاء جملة do { ... } while ($condition); في لغة PHP بفاصلة منقوطة بعد قوس الشرط النهائي.

صواب؛ تتطلب صياغة do...while وضع فاصلة منقوطة في نهاية سطر الشرط.

05

أي كلمة محجوزة تُستخدم لإغلاق صيغة القوالب البديلة while ($item <= 3): في لغة PHP؟

تُغلق صيغة القوالب البديلة لحلقة while بالكلمة المحجوزة endwhile;.

06

تدعم لغة PHP صيغة قوالب بديلة بالنقطتين (do: ... enddo;) لحلقات do...while.

خطأ؛ تدعم حلقة while العادية فقط صيغة endwhile; بينما تُكتب do...while بالأقواس المعقوفة دائماً.

07

أي إعداد في ملف php.ini يحمي خادم الويب من التوقف الدائم عندما يدخل ملف برمجي بالخطأ في حلقة while لا نهائية؟

يحدد الإعداد max_execution_time الحد الأقصى لثواني التنفيذ قبل إيقاف السكربت تلقائياً.

08

اختر جميع العبارات الصحيحة التي تقارن بين حلقة while وحلقة do...while في PHP:

تفحص while الشرط قبل الدورة (0 أو أكثر)، وتفحص do...while الشرط بعد الدورة (1 أو أكثر).