loading...
طراحی وب سایت

hadi بازدید : 1 شنبه 30 شهریور 1392 نظرات (0)

آموزش PHP - كنترل جريان در PHP - بخش دوم دستورات تکرار و حلقه هاي while و for

 فرستادن به ايميل چاپ مشاهده در قالب PDF

برخي اوقات نياز است يک عمل خاص بار ها و بارها براي تعداد معين و يا تا تحقق يک شرط خاص انجام شود . مثلا چاپ اعداد 1 تا 100 انجام عمليات چاپ يک عدد صحيح به تعداد 100 بار است . و يا چاپ مشخصات تمامي دانشجويان که در يک جدول خاص از ديتا بيس هستند  با عمليات يکساني صورت مي گيرد منتها اين عمليات بايد به تعداد دانشجويان تکرار شود بديهي است که چون از قبل نمي دانيم تعداد دانشجويان چقدر است نمي توانيم اين دستورات را copy & paste نمائيم . (اگر هم تعداد را مي دانستيم اين کار بسيار غير منطقي است .) بنابراين در چنين وضعيت هايي که نياز به تکرار يک سري عمليات معين داريم از  طراحی وب سایت  دستورات تکرار و حلقه ها استفاده مي کنيم . در php چهار نوع حلقه تکرار وجود دارد که به ترتيب آنها را شرح خواهيم داد :

حلقه for :

اين حلقه معمولا در مواردي استفاده مي شود که تعداد تکرار ها دقيقا معلوم است . مثلا براي چاپ اعداد 1 تا 100 معلوم است که عمليات چاپ بايد 100 بار اجرا شود . حالت کلي کد اين حلقه به شکل زير نوشته مي شود :

 

<?php

for(<counter initialization> ; <conditional statement> ; <new assignment to counter>)

//some codes

?>

 

حلقه for بالا داراي چهار قسمت است :

1- <Counter Initialization> : که يک شمارنده را براي شمارش تعداد تکرار حلقه مقدار دهي اوليه مي کند .

2- <Conditional Statement> : يک عبارت شرطيست که تعيين مي کند تا چه زماني اين حلقه تکرار شود و تا وقتي که اين شرط (که مي تواند يک عبارت شرطي ترکيبي باشد) ارزش درستي يا true داشته باشد اين حلقه ادامه مي يابد و هنگامي که اين مقدار برابر نادرستي يا false قرار بگيرد منجر به خروج از حلقه مي شود .

3- <new assignment to counter> : موجب مي شود مقدار جديدي در شمارنده حلقه قرار بگيرد و مقدار قبلي آن تغيير کند .

4- Body : اين قسمت کدي است که بايد در صورت درستي شرطي که در بند 2 ذکر شد اجرا شود .

روند اجراي دستور for بدين شکل است که ابتدا مرحله 1 يعني Counter Initiialization انجام مي شود ، سپس در مرحله دوم درستي عبارت شرطي بررسي مي شود . در اين عبارت شرطي معمولا به نوعي از Counter يا شمارنده حلقه استفاده مي شود که با انتساب مقدار جديد به آن بايد در اين جهت حرکت کند که يک زماني عبارت شرطي مقدار نادرست به خود بگيرد تا بدين شکا از حلقه بي نهايت يا هميشه درست اجتناب شود .

در مرحله سوم نوبت به اجراي بدنه حلقه مي رسد و پس از اجرا در مرحله چهارم انتساب جديد به شمارنده صورت مي گيرد . در مرحله پنجم دوباره عبارت شرطي بررسي ميشود و در صورت درستي يکبار ديگر اين حلقه اجرا مي شود و به همين ترتيب تا زماني که شرط نادرست شود شمارنده تغيير کرده ، شرط بررسي شده و بدنه حلقه اجرا مي شود . به مثال زير توجه کنيد و سعي کنيد آنرا اجرا کنيد :

<?php

for($cnt = 1 ; $cnt<6 ; ++$cnt)

echo $cnt."<br />";

?>

در حلقه فوق قصد بر اينست که اعداد 1 تا 5 را چاپ کنيم . در مرحله اول طراحی سایت مقدار متغير cnt برابر 1 شده و شرط بررسي مي شود چون 1 کوچکتر از 6 است بدنه داخلي دستور for اجرا مي شود . در مرحله بعد يک واحد به cnt اضافه شده و شرط دوباره بررسي مي شود و کار همينطور ادامه مي يابد تا جايي که مقدار cnt به 6 برسد در اينجا چون 6 از 6 کوچکتر نيست اجراي حلقه for به پايان مي رسد و دستور پس از بلوک for اجرا مي شود. توجه کنيد که در مثال فوق متغير cnt براي اينکه سطر به سطر چاپ شود به يک تگ br ، الحاق شده است .

لازم به ذکر است که نوشتن دستور for به شکل بالا مربوط به زمانيست که بدنه دستور for تک خطي باشد اگر بدنه اين دستور چند خطي باشد يعني در هر بار تکرار بيش از يک خط کد اجرا شود بايد مجموعه دستورات را در داخل آکولاد باز و بسته يعني } و { قرار داد.

ضمن اينکه هر چهار قسمت اول تا چهارم اختياري هستند و مي توانند وجود نداشته باشند بنابراين دستور زير نيز يک دستور کاملا درست (از لحاظ دستوري) تلقي مي شود :

<?php

for( ; ; );

?>

اين حلقه for اگر چه از نظر دستوري درست است ولي داراي يک خطاي منطقي است چرا که نشاندهنده يک حلقه بي نهايت است که هيچ گاه پايان نمي پذيرد و پردازنده را تا ابد مشغول نگاه مي دارد . در حقيقت نبود هر يک از اين پارامتر ها به معني انجام ندادن کار مشخصي است . حلقه بالا هيچ شمارنده اي ندارد و براي ادامه کار خود به تأمين هيچ شرطي نيز نياز ندارد و علامت (;) آخر نيز به اين معني است که هيچ کاري انجام نده بنابراين پردازنده تا ابد مشغول انجام دادن "هيچ کاري" مي شود .

 

حلقه تکرار while :

در تکرار اين حلقه معمولا از قبل تعداد خاصي مد نظر نيست بلکه اين حلقه دائما يک شرط يا عبارت شرطي مرکبي را بررسي مي کند و تا زماني که آن شرط درست باشد بدنه حلقه اجرا مي شود . شکل کلي دستور while به شکل زير است :

<?php

while(<conditional statement>)

//do somethings;

?>

با دستور while حتي مي توانيد حلقه هاي بسازيد که تعداد تکرار در آنها مشخص است .(مانند دستور for) منتها چون در اينجا شمارنده اي وجود ندارد خود برنامه نويس بايد يک شمارنده در نظر بگيرد و افزايش يا کاهش آنرا مديريت کند . به عنوان مثال ، مسئله چاپ اعداد 1 تا 5 را که در بالا با for نوشتيم در اينجا با دستور while مي نويسيم :

<?php

$cnt=1;

while($cnt<6)

{

echo $cnt."<br />";

++$cnt;

}

?>

اين برنامه را به شکل زير نيز مي توان نوشت :

<?php

$cnt=1;

while($cnt<6)

echo $cnt++."<br />";

?>

همانطور که مي بينيد عملگر Increment به همراه متغير  طراحی وب سایت  در دستور echo به کار رفته است و چون به صورت پسوندي به کار رفته اول عمل چاپ متغير انجام شده و سپس يک واحد به متغير اضافه مي شود . اين کد را هم اکنون امتحان کنيد .

اين حلقه به اين شکل کار مي کند که با پيمايش آرايه هر بار يکي از خانه هاي آنرا در متغيري بنام var ميريزد و در داخل بدنه دستور foreach با متغير var کار مي کند . بار ديگر که دستور foreach اجرا مي شود خانه بعدي آرايه را واکشي کرده و در var مي ريزد و اين ماجرا تا انتهاي آرايه تکرار مي شود . در زير مثالي از کاربرد حلقه foreach را مي بينيد .

<?php

$cars = new array("BMW" , "Audi" , "Benz");

foreach($cars as $vehicle)

echo $vehicle."<br />";

?>

ارسال نظر برای این مطلب

کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 14
  • کل نظرات : 0
  • افراد آنلاین : 2
  • تعداد اعضا : 0
  • آی پی امروز : 15
  • آی پی دیروز : 1
  • بازدید امروز : 15
  • باردید دیروز : 0
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 15
  • بازدید ماه : 17
  • بازدید سال : 19
  • بازدید کلی : 231