في هذا الدرس 6تصفّح المواضيع
تُنفذ حلقة while كتلة من الأوامر البرمجية بشكل متكرر طالما أن شرطها المنطقي يساوي true. ولأن محرك PHP يفحص الشرط قبل الدخول في كل دورة، تُعرف بأنها حلقة ذات فحص مسبق؛ فإذا كان الشرط يساوي false منذ البداية، فلن يعمل جسم الحلقة أبداً:
<?php
$counter = 1;
while ($counter <= 4) {
echo "Step " . $counter . "\n";
$counter++;
}
تعتمد كل حلقة while منضبطة على ثلاثة أركان متكاملة:
- التهيئة الابتدائية: تعريف متغير البداية قبل الحلقة (مثل
$ticketsLeft = 3;). - شرط الاستمرار: الفحص المنطقي المكتوب بين قوسي
while ($ticketsLeft > 0). - تحديث العداد: تعديل قيمة المتغير داخل جسم الحلقة (مثل
$ticketsLeft--;) للوصول الحتمي إلى نقطة التوقف.
<?php
$ticketsLeft = 3;
while ($ticketsLeft > 0) {
echo "Issued ticket. Remaining: " . $ticketsLeft . "\n";
$ticketsLeft--;
}
echo "All tickets sold out.";
إذا نسيت تحديث متغير الشرط داخل جسم حلقة while — أو عدلته في الاتجاه الخاطئ — فسيظل الشرط يساوي true إلى الأبد، مما يسبب حلقة لا نهائية (Infinite Loop) تستنزف المعالج حتى يوقفها الخادم. لذلك تأكد دائماً من تقدم العداد نحو شرط التوقف في كل دورة:
<?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 تشغيل الكود مرة واحدة على الأقل حتى لو كان الشرط خاطئاً منذ البداية. وانتبه للفاصلة المنقوطة الإلزامية ; في نهاية السطر:
<?php
$attempt = 1;
$maxRetries = 0;
do {
echo "Running initial connection attempt #" . $attempt . "\n";
$attempt++;
} while ($attempt <= $maxRetries);
عند تضمين حلقة while داخل قوالب HTML، توفر لغة PHP الصياغة البديلة بالنقطتين؛ حيث يُستبدل قوس الفتح المعقوف { بنقطتين رأسيتين : ويُستبدل قوس الإغلاق } بالكلمة المحجوزة endwhile; لتوضيح بداية ونهاية الحلقة وسط وسوم HTML:
<?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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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 ويرسلها إلى متصفح العميل بعد التنفيذ.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
أنشئ ملف PHP محلياً ونفّذ المثال البرمجي المشروح في قسم حلقة التكرار الشرطية while للتحقق من المخرجات.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم عداد الحلقة وشرط التوقف وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
كم مرة يتم تنفيذ جسم حلقة while ($count < 5) القياسية إذا كانت قيمة $count الابتدائية تساوي 10 قبل الحلقة؟
لأن الشرط 10 < 5 خاطئ منذ الفحص الأول، لن يتم تنفيذ جسم حلقة while ولا مرة (0 مرات).
ماذا يحدث إذا كانت حلقة while ($i <= 5) تطبع قيمة $i في كل دورة دون زيادة أو تغيير قيمة $i داخل جسم الحلقة؟
عدم تحديث متغير الحلقة يبقي الشرط صحيحاً دائماً مما يسبب حلقة لا نهائية.
ما الفارق السلوكي الجوهري بين حلقة do...while وحلقة while القياسية في PHP؟
تنفذ حلقة do...while الأوامر أولاً ثم تفحص الشرط في النهاية، مما يضمن تشغيلها مرة واحدة على الأقل.
يجب إنهاء جملة do { ... } while ($condition); في لغة PHP بفاصلة منقوطة بعد قوس الشرط النهائي.
صواب؛ تتطلب صياغة do...while وضع فاصلة منقوطة في نهاية سطر الشرط.
أي كلمة محجوزة تُستخدم لإغلاق صيغة القوالب البديلة while ($item <= 3): في لغة PHP؟
تُغلق صيغة القوالب البديلة لحلقة while بالكلمة المحجوزة endwhile;.
تدعم لغة PHP صيغة قوالب بديلة بالنقطتين (do: ... enddo;) لحلقات do...while.
خطأ؛ تدعم حلقة while العادية فقط صيغة endwhile; بينما تُكتب do...while بالأقواس المعقوفة دائماً.
أي إعداد في ملف php.ini يحمي خادم الويب من التوقف الدائم عندما يدخل ملف برمجي بالخطأ في حلقة while لا نهائية؟
يحدد الإعداد max_execution_time الحد الأقصى لثواني التنفيذ قبل إيقاف السكربت تلقائياً.
اختر جميع العبارات الصحيحة التي تقارن بين حلقة while وحلقة do...while في PHP:
تفحص while الشرط قبل الدورة (0 أو أكثر)، وتفحص do...while الشرط بعد الدورة (1 أو أكثر).