حلقة While
جزء من قسم Fundamentals في رحلة PHP على Coddy — الدرس 48 من 71.
بينما تعمل حلقة for بشكل رائع عندما تعرف العدد الدقيق للتكرارات، فإن حلقة while تعد مثالية عندما تريد الاستمرار في التكرار حتى يصبح الشرط خاطئاً.
تتحقق حلقة while من شرطها قبل كل تكرار. إذا كان الشرط صحيحاً، يتم تنفيذ الكود الموجود بالداخل. ويستمر هذا حتى يصبح الشرط خاطئاً.
<?php
$count = 1;
while ($count <= 3) {
echo "Count: $count\n";
$count++;
}
?>هذا يخرج:
Count: 1
Count: 2
Count: 3تبدأ الحلقة بالتحقق مما إذا كان $count <= 3. وبما أن الشرط صحيح، يتم تشغيل الكود وزيادة قيمة $count. عندما تصل قيمة $count إلى 4، يفشل الشرط وتتوقف الحلقة.
هام: تأكد دائمًا من وجود شيء ما داخل الحلقة (loop) يجعل الشرط خاطئًا (false) في النهاية. وإلا، ستنشئ حلقة لا نهائية (infinite loop) لا تتوقف أبدًا عن العمل.
<?php
$total = 0;
$num = 1;
while ($total < 10) {
$total += $num;
$num++;
}
echo $total;
?>يستمر هذا في إضافة الأرقام حتى يصل المجموع إلى 10 أو يتجاوزها، ثم يخرج القيمة النهائية.
التحدي
سهلاقرأ عدداً صحيحاً واحداً من المدخلات يمثل المجموع المستهدف.
استخدم حلقة while لإضافة أرقام متتالية تبدأ من 1 (1، 2، 3، 4، ...) حتى يصل المجموع الكلي إلى المجموع المستهدف أو يتجاوزه.
اطبع المجموع النهائي في السطر الأول، وآخر رقم تمت إضافته في السطر الثاني.
مثال 1:
إذا كانت المدخلات 10، يجب أن تكون المخرجات:
10
4(1 + 2 + 3 + 4 = 10، وهو ما يصل إلى الهدف)
مثال 2:
إذا كانت المدخلات 15، يجب أن تكون المخرجات:
15
5(1 + 2 + 3 + 4 + 5 = 15)
مثال 3:
إذا كانت المدخلات 7، يجب أن تكون المخرجات:
10
4(1 + 2 + 3 + 4 = 10، وهو ما يتجاوز 7)
ورقة مرجعية
يتحقق تكرار while من الشرط قبل كل دورة ويستمر في العمل حتى يصبح الشرط خاطئاً.
الصيغة الأساسية:
<?php
$count = 1;
while ($count <= 3) {
echo "Count: $count\n";
$count++;
}
?>يتحقق التكرار مما إذا كان $count <= 3 قبل كل دورة. عندما يصبح الشرط خاطئاً، يتوقف التكرار.
هام: تأكد دائماً من وجود شيء داخل التكرار يجعل الشرط خاطئاً في النهاية لتجنب التكرارات اللانهائية.
مثال مع التراكم:
<?php
$total = 0;
$num = 1;
while ($total < 10) {
$total += $num;
$num++;
}
echo $total;
?>جرّب بنفسك
<?php
// قراءة المجموع المستهدف
$target = intval(fgets(STDIN));
// تهيئة المتغيرات
$total = 0;
$num = 0;
// TODO: اكتب كودك هنا
// استخدم حلقة while لإضافة أرقام متتالية (1، 2، 3، ...)
// حتى يصل المجموع إلى الهدف أو يتجاوزه
// طباعة المجموع النهائي وآخر رقم تمت إضافته
echo $total . "\n";
echo $num;
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4معاملات المقارنة والمنطق
معاملات المقارنةالمساواة والتطابقالمعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيط2المتغيرات وأنواع البيانات
الأرقامالنصوص وعلامات الاقتباسالقيم المنطقية (Booleans)قواعد التسميةملخص - تهيئة المتغيراتالمتغيرات الفارغةدمج النصوصاستقبال مدخلات المستخدمتحويل أنواع البيانات5المنطق الشرطي
جملة Ifجملة If - Elseالعامل الثلاثي (Ternary Operator)عامل Null Coalescingجملة Switchمراجعة - اتخاذ القرارات8الحلقات التكرارية
حلقة Forحلقة Whileحلقة Foreachالتكرار باستخدام المفاتيح والقيمجملة Breakجملة Continueمراجعة - التكرار عبر البيانات3المعاملات الأساسية
المعاملات الحسابيةمعامل باقي القسمةمعامل الأسالتعيين المركبالزيادة والنقصانأسبقية المعاملاتمراجعة - الحسابات البسيطةمعاملات النصوص