[متوسط] حلقات التكرار
حلقة التكرار while :
ومفهومها : استمر في حلقة مادام الشرط متحققاً.
ويتم التحقق من الشرط في بداية كل حلقة فعند التحقق من الشرط نقوم بالدخول إلى الحلقة وتنفيذ الأوامر مرة واحدة ثم نعود مرة أخرى إلى بداية الحلقة يتم التحقق من الشرط وهكذا...
وفائدة حلقات التكرار أنها تقوم باختصار الأوامر قم بتجربة المثال التالي ثم سنكمل حديثنا بعده:
كود PHP:
<?php
$state = 0;
while($state <100):
++$state;
echo $state;
echo "
";
endwhile;
?>
والآن بعد تجربة هذا المثال سنجد أننا قمنا بإضافة الأعداد من واحد إلى مئة بدون أن نقوم بكتابتها كلها فقط بحلقات التكرااااار فلو لم نستخدم حلقة التكرار سنجد أننا سنقوم بكتابة مئات الأسطر والآن أرأيت كم لها فائدة حلقة التكرار هذه.
حلقة التكرار Do while :
ومفهومها: استمر في حلقة مادام الشرط متحققاً.
ولكن هذه ليست مثل سابقتها فهذه الحلقة يتم التحقق من الشرط في نهاية الحلقة ويعني ذلك أنه يتم تنفيذ الأوامر للمرة الأولى ثم يتم التحقق من الشرط فإذا كان الشرط متحققاً نعود إلى الحلقة مرة أخرى وننفذ ما بداخلها ومن ثم يتم التحقق من الشرط وهكذا....
أما إذا لم يتحقق الشرط فيتم الخروج من الحلقة ...
والآن أنظر إلى المثال التالي:
كود PHP:
<?php
$state = 0;
do{
++$state;
echo $state;
echo "
";
}while ($state<100);
?>
الآن عرفنا نوعاً آخر من حلقات التكرار إذاً فلننتقل إلى نوع جديد.
حلقة التكرار For :
ومفهومها: استمر في حلقة ما دام الشرط متحققاً.
ولكن هذه تختلف عن الأولي والثانية فنحن هنا نحدد طول الحلقة بواسطة تحديد بداية الحلقة وشرطها وطريقة تصرف الحلقة.
والآن أنظر إلى المثال التالي:
كود PHP:
<?php
for($state=1;$state<100;$state++){
echo "<b>".$state."</b>
";
}
?>
في المثال السابق قمنا بتحديد بداية الحلقة بالمتغير $state وجعلنا قيمته 1 ثم قمنا بوضع شرط الحلقة بأن جعلنا الحلقة تبقى مستمر مادام المتغير أقل من 100 وتزداد قيمة المتغير كل مرة 1 وعند تجربة المثال نجد أنه تمت طباعة الأعداد من 1 إلى 99 .
والآن تعرفنا على نوع ثالث من حلقات التكرار وسننتقل الآن إلى نوع جديد من حلقات التكرار .
حلقة التكرار foreach :
ومفهومها: استمر في حلقة مادام هنالك عناصر داخل مصفوفة مثلاً أو جدول أو غيرها ...
هذه الحلقة تسهل العمل مع المصفوفات مثلاً كنت في مدرسة وتريد عرض أسماء الطلاب وهي في مصفوفة ما فأنصحك باستخدام هذه الحلقة.
والآن أنظر إلى المثال التالي ولاتنسى أن تقم بتجربته :
كود PHP:
<html dir='rtl'>
<head>
<meta http-equiv='Content-Language' content='ar-sa'>
<meta name='GENERATOR' content='Microsoft FrontPage 5.0'>
<meta name='ProgId' content='FrontPage.Editor.Document'>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1256'>
<title>أسماء الطلاب</title>
</head>
<body>
<p align='center'><u><b><font size='6' color='#FF0000'>أسماء الطلاب</font></b></u></p>
<table border='1' cellpadding='0' cellspacing='0' style='border:3px double #008000; border-collapse: collapse' bordercolor='#111111' width='100%' id='AutoNumber1'>
<?php
$name = array("عبد الله","صالح","أحمد","محمد","أمجد");
foreach ($name as $all){
echo " <tr><td width='100%' style='border:3px double #008000; border-collapse: collapse'><p align='center'><b>";
echo $all;
echo "</b></td></tr>";
}
?>
</table>
</body>
</html>
والآن إذا نظرنا إلى المثال السابق سنجد أنه يقوم بعرض جميع أسماء الطلاب في المصفوفة التي تحمل المتغير $name ووضعهاجميعاً في متغير جديد باسم $all والآن تعرفنا إلى نوع جيد من حلقات التكرار .
ولكن ماذا لو كنا نريد أن نجعله يخرج من مصفوفة عند أمر معين أو بالمعنى الأصح لو كنا نريده أن يظهر الاسمين الأولين فقط "" عبد الله و صالح "" إذا يجب أن نوقف الحلقة لذلك إذا كنا نريد إيقاف الحلقة في وقت معين نستخدم الدالة break لنوقف الحلقة قم بتجربة المثال التالي لنتعرف على هذه الدالة الجديدة :
كود PHP:
<html dir='rtl'>
<head>
<meta http-equiv='Content-Language' content='ar-sa'>
<meta name='GENERATOR' content='Microsoft FrontPage 5.0'>
<meta name='ProgId' content='FrontPage.Editor.Document'>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1256'>
<title>أسماء الطلاب</title>
</head>
<body>
<p align='center'><u><b><font size='6' color='#FF0000'>أسماء الطلاب</font></b></u></p>
<table border='1' cellpadding='0' cellspacing='0' style='border:3px double #008000; border-collapse: collapse' bordercolor='#111111' width='100%' id='AutoNumber1'>
<?php
$name = array("عبد الله","صالح","عبدالعزيز","محمد","أمجد");
foreach ($name as $all){
echo " <tr><td width='100%' style='border:3px double #008000; border-collapse: collapse'><p align='center'><b>";
if ($all=="عبدالعزيز"){
break;
}
echo $all;
echo "</b></td></tr>";
}
?>
</table>
</body>
</html>
لقد رأينا كيف أن هذه الدالة قامت بإيقاف الحلقة فقد عرضت الاسمين الأولين ..
انتهى الدرس بحمد الله
