php الحلقات

while

آخر تحيين: 08-01-2015

do ... while php الشروط


الحلقة while (= بينما ، ما دام) ، تعتبر أبسط الحلقات ، (و هذا لا يعني بأن الباقيات عسيرة) ، و هي تأمر php بتنفيذ و إعادة تنفيذ الشيفرة ما دام الشرط صحيحا . كما رأينا في درس الشروط ، نضع الشيفرة التي نود تنفيذها داخل الحلقة while بين قوسين {} . مثال للطريقة العامة لكتابة الحلقة :


while (الشرط) {
// الشيفرة المراد تنفيذها ما دام الشرط صحيحا
}


لنرى الآن مثالا حيا :
<?php
$i = 0;
while($i < 5)
{
    echo $i."<br>";
    $i++;
}
?>

ستحصلون على خمسة أرقام من 0 إلى 4 . لنُفصّل الشيفرة حتّى تستوعبوا ماذا جرى :
في البدء قمنا بإعطاء المتغير i$ القيمة 0 ، هذه العملية تُسمّى تهييء المتغيّر . ثم بنينا شرطنا عليه . و الشرط يأمر php بتنفيذ الشيفرة العجيبة مادام المتغيّر i$ أصغر من 5 .

شيفرتنا تتكون من تعليمتين (يمكنكم كتابة ماشئتم من التعليمات) : التعليمة echo تعرّفتم عليها سابقا ، و التعليمة الغريبة ++i$
++i$ عبارة عن عدّاد ، و هو بكل بساطة اختصار للتعبير $i + 1 .
و يمكن أن يكون العد تصاعديا كما في حالتنا أو تنازليا ، و هنا نستعمل --i$ أي التعبير $i - 1 ، سنرى مثالا قريبا ، أما الآن لنبقى مركزين على ما نحن بصدده .
في البداية يقارن الحاسوب قيمة المتغير i$ التي هي 0 ، و يجدها أصغر من 5 ، الشرط صحيح ، إذاً يقوم بينفيذ تعليمة echo و وتكون قيمة i$ لحد الآن هي 0 ، ثم قبل الخروج من الحلقة ، ينفذ الشيفرة التالية التي تضيف رقم 1 للعدّاد "$i+1" أي "0+1" فتصبح قيمة i$ هي 1 ، ثم يبدأ الشروع في الدخول إلى الحلقة مرة أخرى ، يقوم بمقارنة القيمة الجديدة 1 للمتغير i$ ، فيجدها أصغر من 5 ، ينفذ الشيفرة و يضيف 1 للعداد ، ستصبح قيمة $x = 2 . و هكذا دواليك .
في كل مرة قبل الدخول في الحلقة و تنفيذ الشيفرة ، يقوم php بمقارنة المتغير i$ هل هو أصغر من 5 . إذا وجد الشرط صحيحا يدخل في الحلقة و يقوم بتنفيذ الشيفرة ، ثم يضيف رقم واحد للعدّاد . عندما تصبح قيمة i$ تساوي 4 ، يقوم يتنفيذ الشيفرة لآخر مرة و يضيف 1 للمتغير فتصبح قيمته تساوي 5 ثم يقارنها هل هي أصغر من 5 ، فيجد الشرط خاطئا ، و يترك الحلقة جانبا . الشرح بالصورة :



لنرى مثالا آخر . تخيل أنك تلميذ متهاون و طلب منك الأستاذ كتابة عقوبة ما 50 مرّة . في هذه الحالة قم باستعمال سلاحك الفعال while

<?php
$i = 0;
while($i < 50)
{
    echo $i."أنا تلميذ كسول <br>";
    $i++;
}
?>

هكذا تم تنفيذ عقوبتكم في أجزاء من المئة .

كما وعدتكم هذا مثال للعد التنازلي ، و لا يختلف كثيرا عن سابقه

<?php
$i = 50;
while($i > 0)
{
    echo $i."أنا تلميذ كسول <br>";
    $i--;
}
?>

في هذه الحالة أعطينا المتغيّر القيمة 50 التي سيبدأ بها العد التنازلي ، و في كل مرة ندخل في الحلقة نقوم بخصم واحد من المتغير . لاحظوا أن في شرطنا حدّدنا أن الدخول إلى الحلقة يستوجب أن يكون المتغير أكبر من 0 . و هذا طبيعي لأن المتغير يمكنه أن يكون سلبيا . و لو لم نُحدّد الشرط بهذه الطريقة ، و كتبنا بدلا من ذلك while ($i < 50) لدخلنا في حلقة مفرغة لا تنتهي ، لأن العدّاد سيقوم بخصم واحد كلما مر داخل الحلقة ، حتى يصل إلى الرقم 0 و يبدأ في الأرقام السلبية (-1 , -2 ...) إلى ما لا نهاية ، لن ينفجر حاسوبكم و لكنه سيتقاعس عن العمل ، و يشعركم بوجود خطا . لذا كونوا حذرين في انتقاء شروطكم ، يجب أن يتوفّر في شرطكم دائما على الأقل احتمال واحد خطأ ، حتى يوقف الحلقة.

إذا كان الشرط خاطئا منذ البداية ، لا يتم الدخول نهائيا إلى الحلقة

هذا كل ما يتعلق بالحلقة while . دور الحلقات لا يكمن في إعادة نفس الشيفرة كما في أمثلتنا ، و ستتجلّى لكم أهميتها قريبا . كونوا صبورين ، في الوقت الراهن ، نحن لا نقوم بتطوير أي شيء ، فلا زلنا فقط في التعرف على أهم تعليمات و قواعد php .