در اين جلسه می خواهیم در مورد حلقه ها صحبت کنیم. كساني که با برنامه نویسی آشنا هستند می دانند که حلقه ها جزو دستورات مهم بشمار می آیند . و مطمئنا شما هم در برنامه های خود مجبور خواهید شد که از آنها استفاده کنید.
حلقه FOR :
زمانیکه ما میخواهیم یک سری از دستورات را به دفعات مشخص و معینی اجرا کنیم از حلقه for استفاده می کنیم. شکل کلی حلقه for بصورت زیر می باشد.
کد:
for (expr1; expr2; expr3){
statement
}
Expr1 = مقدار اوليه
Expr2 = شرط
Expr3 = روند كاهش يا افزايش ( دقيقا مثل C++ است )
این برای حالتی است که عبارت statement یک خط باشد . اما اگر عبارت statement بیش از یک خط باشد حلقه for به یکی از دو صورت زیر نوشته می شود.
کد:
for (expr1; expr2; expr3 ){
statement1;
statement2;
statement3;
{
يا
کد:
for (expr1; expr2; expr3 )
statement1;
statement2;
statement3;
endfor;
همانطور که مشاهده می کنید تفاوت این دو حالت با حالت اول در این است که ما در دو حالت دوم (یعنی وقتی که دستورات داخل حلقه بیش از یک خط باشد) باید ابتدا و انتهای حلقه را مشخص کنیم. حالا به یک مثال توجه کنید.
نكته :
1 - خروج از حلقه با استفاده از دستور break برای پایان دادن حلقه وجود دارد. گاهی اوقات نیاز است که وقتی کد به شرایط خاصی رسید حلقه پایان یابد.
کد:
<html>
<head>
<title>Listen 9</title>
</head>
<body>
<?php
$counter = − 4;
for ( ; $counter <= 10; $counter++ )
{
if ( $counter == 0 )
// چون تقسيم بر صفر بي معني است پس كاملا از حلقه خارج شويم
break;
$temp = 4000/$counter;
print "4000 divided by $counter is... $temp
";
}
?>
</body>
</html>
2 – همچنين از دستور continue نيز مي توان در موارد خاص استفاده كرد.
کد:
<html>
<head>
<title>Listing 5.11</title>
</head>
<body>
<?php
$counter = − 4;
for ( ; $counter <= 10; $counter++ )
{
if ( $counter == 0 )
// در اين مورد فقط در حالت صفر حلقه قظع مي شود ولي دوباره به ادامه مقادير مي رود. يعني از صفر به 1
continue;
$temp = 4000/$counter;
print "4000 divided by $counter is... $temp
";
}
?>
</body>
</html>
فرض کنید می خواهیم برنامه ای بنویسیم که حرف A را 20 بار چاپ کند. برای این کار این گونه عمل می کنیم.
کد:
<?
for ($i=0;$i++;$i<20){
echo "A
";
{
?>
توضیحاتی که در مورد این برنامه لازم است:
- 1 عبارت$i=0 باعث می شود که متغییر i مقدار اولیه 0 بگیرد.
- 2 عبارت $i < 20 یک شرط است و می گوید تاوقتی که مقدار i کمتر از 20 است حلقه را ادامه بده.
- 3 عبارت $i++ به این معنی است که در هر بار اجرای حلقه به مقدار i یک واحد اضافه کن.
- 6 عبارت
را برای این استفاده کرده ایم که هر A در یک خط چاپ شود.
Foreach:
در این ساختار ، در هر بار تکرار محتوای درایه در متغییر value قرار می گیرد و پس از اتمام حلقه ، درایه بعدی جای درایه فعلی را می گیرد و این عمل برای تک تک درایه های آرایه تکرار می شود.
کد:
foreach (array as value)
{
code to be executed;
}
مثال:
برنامه زیر محتوای درایه های آرایه را چاپ می کند :
کد:
<html>
<body>
<?php
$arr=array("one", "two", "three");
foreach ($arr as $value)
{
echo "Value: " . $value . "
";
}
?>
</body>
</html>
حلقه while :
اين حلقه مجموعه از دستورات را تازمانيکه شرط يا شرايطي برقرار باشد اجرا مي کند و تفاوت آن با حلقه for در همين مورد است. اگر به خاطر داشته باشيد حلقه for مجموعه اي از دستورات را به دفعات مشخصي اجرا مي کرد. مثلا 10 بار ، اما در حلقه while تعداد تکرار مشخص نيست و بستگي به شرايط تعريف شده دارد .
حلقه while را مي توان به دو صورت WHILE{} و DO ... WHILE بکار برد.
حلقه While :
حلقه while بصورت زير استفاده مي گردد.
کد:
} (شرط) While
مجموعه دستورات
{
حلقه Do ... While :
اين حلقه بسيار شبيه حلقه while مي باشد با اين تفاوت که در اين روش شرط حلقه در آنتهاي حلقه تست مي شود و همين امر باعث مي شود که مجموعه دستورات داخل حلقه حداقل يکبار اجرا شوند.
حلقله Do ... While بصورت زير استفاده مي گردد.
کد:
Do {
مجموعه دستورات
( شرط} While (
البته اگر بجاي مجموعه از دستورات فقط يک دستور داشته باشيم مي توانيم از گذاشتن علامت هاي } و { هم صرفنظر کنيم.
از علامت هاي } و { بمنظور تعيين ابتدا و انتهاي حلقه استفاده مي شود که بجاي آنها مي توان به ترتيب از : و endwhile; استفاده کرد.
براي نمونه به قطعه برنامه زير توجه کنيد:
کد:
$i = 0;
do {
print $i;
} while ($i>0);
با توجه به توضيحات گفته شده خروجي برنامه مشخص خواهد بود.