حلقة while في PHP — شرح الكود والنتيجة
تخيّل أنك تبني صفحة تعرض إشعارات المستخدم. لا تعرف هل عنده 2 إشعار أو 20 أو صفر.
هنا while تكون أنسب من for: نستمر في التكرار ما دام الشرط صحيحاً.
الفكرة ببساطة: «طالما»
while (condition) {
// يتكرر هذا الكود
}
قبل كل دورة، PHP تسأل: "هل الشرط ما زال صحيحاً؟" إذا نعم، تنفذ سطر التكرار. إذا لا، تخرج فوراً من الحلقة وتكمل باقي البرنامج.
مثال 1: أول عداد بسيط
<?php
$x = 1;
while ($x <= 5) {
echo "العدد هو: $x <br>";
$x++;
}
?>
النتيجة في الصفحة:
العدد هو: 1
العدد هو: 2
العدد هو: 3
العدد هو: 4
العدد هو: 5
بدأنا بـ $x = 1 كقيمة بداية.
في كل دورة نطبع $x ثم نزيده واحداً.
عندما وصل إلى 6، لم يعد الشرط $x <= 5 صحيحاً، فتوقفت الحلقة بشكل طبيعي.
مثال 2: نفس المنطق لكن بالعكس
<?php
$x = 5;
while ($x >= 1) {
echo "$x <br>";
$x--;
}
?>
النتيجة:
5
4
3
2
1
بدل الزيادة، هذه المرة نستخدم $x-- للعد التنازلي.
نفس القاعدة: تحديث العداد ضروري حتى نصل لنقطة توقف.
مثال 3: سيناريو أقرب للواقع
<?php
$attemptsLeft = 3;
while ($attemptsLeft > 0) {
echo "لديك $attemptsLeft محاولات متبقية<br>";
$attemptsLeft--;
}
echo "تم استهلاك كل المحاولات";
?>
النتيجة:
لديك 3 محاولات متبقية
لديك 2 محاولات متبقية
لديك 1 محاولات متبقية
تم استهلاك كل المحاولات
هذا نفس مفهوم تسجيل الدخول أو رمز التحقق: طالما هناك محاولات، نكرر. عندما تصبح 0، ينتهي التكرار وننتقل للخطوة التالية.
الخطأ الكلاسيكي الذي يقع فيه المبتدئون
while ($x <= 5) { echo $x; }
متى أختار while بدل for؟
- استخدم
whileعندما عدد التكرارات غير معروف مسبقاً. - استخدم
forعندما عندك بداية ونهاية واضحتان للعداد.
تمرين سريع (بنفس قصة المحاولات)
- ابدأ بمتغير
$coins = 5. - اطبع رسالة "تبقّى X عملات" في كل دورة.
- أنقص العملات حتى تصل 0 ثم اطبع "انتهت العملات".