البي أتش بي من الصفر الدرس الخامس الحلقات التكرارية

في الكاتب: و مدرجة تحت التنصيف PHP, دروس.

بسم الله والصلاة والسلام على رسول الله.

 

هذا الدرس جزء من سلسلة البي أتش بي من الصفر:

 

نبدأ اليوم الدرس الخامس في سلسلة تعلم البي أتش بي من الصفر.

أقسام الدرس:

  • الحلقة التكرارية while.
  • الحلقة التكرارية do .. while.
  • الحلقة التكرارية for.
  • الحلقة التكرارية foreach.

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

الحلقة التكرارية while:

وهي أبسط أنواع الحلقات التكرارية، تسمح لنا هذه الحلقة بتكرار جزء معين من الكود إذا تحقق شرط التكرار. وبنيتها كالتالي:

<?php
while (condition)
{
code to be executed;
}
?>

حيث تقوم أولا بإختبار شرط التكرار فإذا قام الشرط بإرجاع القيمة TRUE يتم تنفيذ الكود داخل الحلقة وعند إنتهاء الكود يتم إختبار الشرط مرة أخرى فإذا أرجع القيمة TRUE يتم تكرار الكود مرة أخرى وهكذا… حتى يقوم الشرط بإرجاع القيمة FALSE حينها يتوقف تنفيذ الكود داخل الحلقة. مثال للتوضيح:

قم بإنشاء ملف جديد وتسميته while.php وضع بداخله الكود التالي:

<html>
<body>
<?php
$i=1;
while($i<=5)
{
echo "The number is " . $i . "<br>";
$i++;
}
?>
</body>
</html>

يقوم هذا الكود بطباعة الأرقام من 1 إلى 5. يبدأ التنفيذ بإختبار الشرط ونسبة لأن المتغير $i يحمل القيمة 1 وعند إختبار الشرط فإن 1 أصغر من 5 فعليه يتم إرجاع القيمة TRUE وتنفيذ الكود يتم أولا طباعة قيمة المتغير $i ومن ثم زيادته بـ1 وعليه عند إختبار الشرط للمرة الثانية تكون قيمة المتغير 2 ويتم تنفيذ الكود للمرة الثانية وهكذا تستمر الحلقة حتى تصبح قيمة المتغير 6 وعندها يتم إختبار الشرط ويكون ناتج الإختبار FALSE ويتوقف تنفيذ الحلقة التكرارية while.

الحلقة التكرارية dowhile:-

تشبه الحلقة التكرارية dowhile الحلقة التكرارية السابقة while في كل شيء إلا إنها تقوم بتنفيذ الكود المراد تكراره مرة واحدة على الأقل وبنيتها كالتالي:

<?php
do
{
code to be executed;
}
while (condition);
?>

فهي تختبر الشرط بعد تنفيذ الكود للمرة الأولى ومن ثم إختبار الشرط، على عكس الحلقة السابقة while والتي تقوم بإختبار الشرط أولا وتقوم بتنفيذ الكود إذا كانت نتيجة الإختبار TRUE. مثال للتوضيح:

قم بإنشاء ملف جديد وتسميته dowhile.php وضع بداخله الكود التالي:

<html>
<body>
<?php
$i=6;
do
{
$i++;
echo "The number is " . $i . "<br>";
}
while ($i<=5);
?>
</body>
</html>

يقوم هذا الكود بطباعة الرقم 6 فقط، وذلك لأنه في الأول يتم تنفيذ الكود المضمن في داخل الحلقة التكرارية dowhile، ومن ثم إختبار الشرط والذي يقتضي لتنفيذ الحلقة مرة أخرى أن تكون قيمة المتغير $i أقل من أو تساوي 5، وسيرجع إختبار الشرط هنا القيمة FALSE نسبة لأن المتغير يحمل القيمة 6.

الحلقة التكرارية for:-

الحلقة التكرارية for هي أكثر الحلقات تعقيدا، وتستخدم غالبا عند معرفة عدد مرات تكرار تنفيذ الكود. وبنيتها كالتالي:

for (init; condition; increment)
{
code to be executed;
}

هنالك ثلاثة أجزاء في الحلقة التكرارية for وهي:
Init: أول جزئية في بنية الحلقة التكرارية for ويتم تنفيذه مرة واحدة فقط عند بداية الحلقة ويستخدم غالبا لضبط العداد الذي ستستخدمه الحلقة التكرارية ولكن يمكن وضع أي كود هنا.
Condition: الجزئية الثانية في بنية الحلقة التكرارية for ويتم تنفيذ هذه الجزئية في بداية كل دورة في الحلقة وهي عبارة عن شرط يتم إختباره في كل دورة فإذا كانت نتيحة الإختبار TRUE يتم المواصلة في تنفيذ الحلقة، أما إذا كانت FALSE فيتم إيقاف تنفيذ الحلقة التكرارية. يمكننا ترك هذه الجزئية فارغة وسيعني هذا أن نتيجة الشرط هي TRUE في كل مرة.
Increment: الجزئية الثالثة والأخيرة في الحلقة التكرارية for ويتم تنفيذ هذه الجزئية في نهاية كل دورة في الحلقة، وغالبا تقوم بزيادة العداد بقيمة معينة في كل دورة، ولكن يمكننا وضع أي كود هنا. مثال للتوضيح:
قم بإنشاء ملف جديد وتسميته for.php وضع بداخله الكود التالي:

<html>
<body>

<?php
for ($i=1; $i<=10; $i++)
{
echo "The number is " . $i . "<br>";
}
?>

</body>
</html>

يقوم هذا الكود بطباعة العدد $i فعليه سيتم طباعة الأرقام من 1 حتى الرقم 10. هيا نتابع تنفيذ الكود: عند تنفيذ الحلقة لأول مرة قمنا بتنفيذ الجزئية الأولى والتي قامت بضبط قيمة العداد وهو المتغير $i بالقيمة 1، وبعد ذلك تم تنفيذ الجزئية الثانية وهي مقارنة العداد $i بالقيمة 10 وبما أن 1 أقل من 10 فإن تنفيذ الحلقة سيستمر. تم تنفيذ الحلقة والتي قامت بطباعة قيمة العداد $i وهي القيمة 1 في أول تنفيذ للحلقة. بعد ذلك تم تنفيذ آخر جزئية في قيمة الحلقة والتي قامت بزيادة قيمة العداد بـ1. في الدورة الثانية يبدأ تنفيذ الحلقة من الجزئية الثانية والتي هي شرط المقارنة حيث أنه كما ذكرنا الجزئية الأولى يتم تنفيذها مرة واحدة بداية الحلقة فقط. ويستمر التنفيذ هكذا حتى تصبح قيمة العداد 11 عندها في الدورة رقم 11 يتم تنفيذ الجزئية الثانية وهي شرطة المقارنة ويتم إرجاع القيمة FALSE ويتم إيقاف الحلقة والخروج منها.

الحلقة التكرارية foreach:-

الحلقة التكرارية foreach تستخدم فقط مع المصفوفات والكائنات، سنتعرف على المصفوفات بشكل أكبر في الدرس القادم ولكن الآن يجب أن نعرف أن المصفوفات هو نوع من المتغيرات يمكنه أن يحمل أكثر من قيمة. نستخدم الحلقة التكرارية foreach لكي نمر على كل عناصر المصفوفة بطريقة سهلة ومبسطة، وفي كل مرة يتم تنفيذ الكود داخل الحلقة. وبنيتها كالتالي:

<html>
<body>

<?php
foreach ($array as $value)
{
code to be executed;
}
?>

</body>
</html>

هناك جزءان أساسيان في الحلقة foreach:
$array: وهو المصفوفة التي نريد نمر على عناصرها بإستخدام الحلقة foreach.
$value: وهو القيمة المحفوظة في الخانة الحالية في المصفوفة.
طريقة عمل الحلقة foreach بسيطة جدا، هي تقوم بالمرور على كل عناصر المصفوفة $array بالترتيب وفي كل مرة تقوم بوضع قيمة العنصر في المتغير $value لنقوم بإستخدام هذه القيمة في الكود المراد تنفيذه.
قم بإنشاء ملف جديد وتسميته foreach.php وضع بداخله الكود التالي:

<html>
<body>
<?php
$colors = array("red","green","blue","yellow");
foreach ($colors as $value)
{
echo "$value <br>";
}
?>
</body>
</html>

سيقوم هذا الكود بطباعة قيم المصفوفة $colors كل لون في سطر منفصل. في كل دورة من دورات الحلقة التكرارية foreach يتم أخذ القيمة الحالية من المصفوفة $colors ووضعها في المتغير $value، ومن ثم طباعة قيمة المتغير $value. وفي الدورة التالية يتم أخذ اللون التالي وطباعته. وهكذا حتى يتم المرور على جميع عناصر المصفوفة بالترتيب. وينتهي تنفيذ الحلقة التكرارية بعد المرور على كل عناصر المصفوفة.

 

بهذا نكون قد وصلنا إلى ختام درسنا، ترقبو الدرس القادم عن المصفوفات.

محمد علي

مبرمج ومطور ويب، يقوم بتطوير أنظمة مبنية على الويب. يستخدم كود إيقنايتر فريم وورك بصورة أساسية. وبالتأكيد مدمن قهوة :-)

More Posts - Twitter

4 Responses to “البي أتش بي من الصفر: الدرس الخامس الحلقات التكرارية”

أضف تعليقاً

  • (لن يتم نشره)