• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

فراگیری آسان زبان PHP

تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
كنترل جريان به نحوه و ترتيب اجراي دستورات PHP برمي گردد . عبارات شرطي كه بخشي از دستورات كنترل جريان را تشكيل مي دهند براي اين هستند كه بسته به شرايط مختلف دستورات مختلفي اجرا شوند .
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
دستور if
اولين دستور كنترل جريان در php‌ دستورif است . كلمه if كه جزء كلمات رزرو شده php است در لغت به معناي اگر و آيا است . در واقع با استفاده از اين دستور بررسي مي كنيم كه آيا شرايط خاصي برقرار است يا خير و سپس مي گوئيم در صورت برقراري شرط يك دستور يا يك سري از دستورات اجرا شود . مانند كد زير :
کد:
<?php
$d = date("D");
if($d == "Fri")
echo "Have a good weekend!";
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
قطعه کد بالا در صورتیکه مقدار متغیر ، برابر با عبارت Fri باشد پیغام مربوطه را چاپ می کند و در غیر اینصورت هیچ اقدامی انجام نمی دهد . حال اگر بخواهیم در صورت عدم برقراری شرط نیز اتفاقی بیفتد و دستور یا دستوراتی اجرا شود یک بخش دیگر به دستور if اضافه می شود و آن else می باشد به شکل زیر :
کد:
<?php

 $d = date("D");

 if($d == "Fri")

 echo "Have a good weekend!";

else

echo "Have a good week day !";

?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
حتی می توانیم در صورت عدم برقراری شرط اول شرط دیگری را بررسی کنیم در اینصورت می توانید از ساختار elseif استفاده کرد :
کد:
<?php
$d = date("D");
if($d == "Fri")
echo "Have a good weekend!";
elseif($d == "Sat")
echo "Hi this is Saturday !";
elseif($d == "Sun")
echo "Hi this is Sunday !";
elseif($d == "Mon")
echo "Hi this is Monday !";
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
این شکل نوشتن elseif معادل نوشتن یک else و if جداگانه است . مانند زیر :
کد:
<?php
$d = date("D");
if($d == "Fri")
echo "Have a good weekend!";
else
if($d == "Mon")
echo "Hi this is Monday !";
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
احتمالا اکنون به این مطلب فکر می کنید که اگر شرایط مورد بررسی زیاد باشد تعداد بلوک های if زیاد می شود و خوانایی کد پائین می آید ؟ درست است . علاوه بر این سرعت اجرا هم در صورت وجود بلوک های متعدد if پائین می آید . راهکاری که برای این وضعیت پیش بینی شده است استفاده از دستور switch می باشد . که در ادامه به بررسی آن می پردازیم .
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
دستور switch
این دستور به شکل کلی زیر نوشته می شود :
کد:
<?php
switch($var)
{
case <option1> : /* some code */ break;
case <option2>: /* some code */ break;
.
.
.
default :  /* some code */ break;
}
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
در این دستور به بررسی مقدار یک متغیر خاص می پردازیم و بر اساس مقادیر متنوع آن تصمیم گیری می کنیم . در قطعه کد بالا به جای مقادیر option که در علامت <> آمده است باید مقادیری از متغیر را بنویسیم که میخواهیم تساوی متغیر با آن مقدار خاص را بررسی کنیم . علامت <> بدین معنی است که باید این علامت و هرچه در آنست را برداشته و چیز دیگری (در اینجا مقدار) به جای آن بگذارید . به عنوان مثال یکی از قطعه کدهای بالا را با دستور switch می نویسیم :
کد:
<?php
$d = date("D");
switch($d)
{
case "Fri" : echo "Have a good weekend !";break;
case "Mon" : echo "Have a good week";break;
default : echo "Have a good weekday";
}
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
در کد بالا مقدار متغیر d بررسی می شود اگر مقدار متغیر برابر با Fri باشد عبارت Have a good weekend چاپ شده و به خاطر رسیدن به دستور break کنترل برنامه به بعد از بلوک switch منتقل می شود . در حقیقت کار دستور break همین است که اجرای داخل دستور Switch را به پایان رساند . اگر دستور break وجود نداشته باشد از جایی که شرط case محقق شود تا رسیدن به اولین دستور break اجرای برنامه ادامه می یابد . اگر مقدار متغیر برابر با Mon باشد عبارت Have a good week چاپ می شود و اگر مقدار متغیر برابر هیچ یک از دو مقدار فوق (Fri و Mon) نباشد دستور default اجرا شده و عبارت Have a good weekday چاپ می شود . البته وجود دستور default اختیاریست . همچنین وجود دستور break نیز اختیاریست و صرفا به منطق اجرای برنامه و خواست برنامه نویس بستگی دارد . مثلا قطعه کد زیر را در نظر بگیرید :
کد:
<?php
$d = date("D");
switch($d)
{
case "Fri" : echo "Have a good weekend !";break;
case "Mon" : echo "Have a good week";
case "Thu" : echo "This is Thuesday";break;
default : echo "Have a good weekday";
}
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
در این کد اگر مقدار متغیر برابر Mon باشد اول عبارت Have a good week چاپ شده و سپبه دلیل عدم وجود دستور break در انتهای این خط دستور case بعدی اجرا شده و عبارت This is Thuesday چاپ شده و بعد با رسیدن کنترل برنامه به دستور break کنترل برنامه به بعد از بلوک switch - case منتقل می شود .
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
برخی اوقات نیاز است یک عمل خاص بار ها و بارها برای تعداد معین و یا تا تحقق یک شرط خاص انجام شود . مثلا چاپ اعداد 1 تا 100 انجام عملیات چاپ یک عدد صحیح به تعداد 100 بار است . و یا چاپ مشخصات تمامی دانشجویان که در یک جدول خاص از دیتا بیس هستند با عملیات یکسانی صورت می گیرد منتها این عملیات باید به تعداد دانشجویان تکرار شود بدیهی است که چون از قبل نمی دانیم تعداد دانشجویان چقدر است نمی توانیم این دستورات را copy & paste نمائیم . (اگر هم تعداد را می دانستیم این کار بسیار غیر منطقی است .) بنابراین در چنین وضعیت هایی که نیاز به تکرار یک سری عملیات معین داریم از دستورات تکرار و حلقه ها استفاده می کنیم . در php چهار نوع حلقه تکرار وجود دارد که به ترتیب آنها را شرح خواهیم داد :
حلقه for :
این حلقه معمولا در مواردی استفاده می شود که تعداد تکرار ها دقیقا معلوم است . مثلا برای چاپ اعداد 1 تا 100 معلوم است که عملیات چاپ باید 100 بار اجرا شود . حالت کلی کد این حلقه به شکل زیر نوشته می شود :
کد:
<?php
for(<counter initialization> ; <conditional statement> ; <new assignment to counter>)
//some codes
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
حلقه for بالا دارای چهار قسمت است :
1- <Counter Initialization> : که یک شمارنده را برای شمارش تعداد تکرار حلقه مقدار دهی اولیه می کند .
2- <Conditional Statement> : یک عبارت شرطیست که تعیین می کند تا چه زمانی این حلقه تکرار شود و تا وقتی که این شرط (که می تواند یک عبارت شرطی ترکیبی باشد) ارزش درستی یا true داشته باشد این حلقه ادامه می یابد و هنگامی که این مقدار برابر نادرستی یا false قرار بگیرد منجر به خروج از حلقه می شود .
3- <new assignment to counter> : موجب می شود مقدار جدیدی در شمارنده حلقه قرار بگیرد و مقدار قبلی آن تغییر کند .
4- Body : این قسمت کدی است که باید در صورت درستی شرطی که در بند 2 ذکر شد اجرا شود .
 

rezapr2

Registered User
تاریخ عضویت
4 نوامبر 2011
نوشته‌ها
309
لایک‌ها
248
محل سکونت
mashhad
تلاشت بينتيجه نخواهد موند و به درجه رجيستر يوزر خواهي رسيد همينطور ادامه بده
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
روند اجرای دستور for بدین شکل است که ابتدا مرحله 1 یعنی Counter Initiialization انجام می شود ، سپس در مرحله دوم درستی عبارت شرطی بررسی می شود . در این عبارت شرطی معمولا به نوعی از Counter یا شمارنده حلقه استفاده می شود که با انتساب مقدار جدید به آن باید در این جهت حرکت کند که یک زمانی عبارت شرطی مقدار نادرست به خود بگیرد تا بدین شکا از حلقه بی نهایت یا همیشه درست اجتناب شود .
در مرحله سوم نوبت به اجرای بدنه حلقه می رسد و پس از اجرا در مرحله چهارم انتساب جدید به شمارنده صورت می گیرد . در مرحله پنجم دوباره عبارت شرطی بررسی میشود و در صورت درستی یکبار دیگر این حلقه اجرا می شود و به همین ترتیب تا زمانی که شرط نادرست شود شمارنده تغییر کرده ، شرط بررسی شده و بدنه حلقه اجرا می شود . به مثال زیر توجه کنید و سعی کنید آنرا اجرا کنید :
کد:
<?php
for($cnt = 1 ; $cnt<6 ; ++$cnt)
echo $cnt."<br />";
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
در حلقه فوق قصد بر اینست که اعداد 1 تا 5 را چاپ کنیم . در مرحله اول مقدار متغیر cnt برابر 1 شده و شرط بررسی می شود چون 1 کوچکتر از 6 است بدنه داخلی دستور for اجرا می شود . در مرحله بعد یک واحد به cnt اضافه شده و شرط دوباره بررسی می شود و کار همینطور ادامه می یابد تا جایی که مقدار cnt به 6 برسد در اینجا چون 6 از 6 کوچکتر نیست اجرای حلقه for به پایان می رسد و دستور پس از بلوک for اجرا می شود. توجه کنید که در مثال فوق متغیر cnt برای اینکه سطر به سطر چاپ شود به یک تگ br ، الحاق شده است .
لازم به ذکر است که نوشتن دستور for به شکل بالا مربوط به زمانیست که بدنه دستور for تک خطی باشد اگر بدنه این دستور چند خطی باشد یعنی در هر بار تکرار بیش از یک خط کد اجرا شود باید مجموعه دستورات را در داخل آکولاد باز و بسته یعنی } و { قرار داد.
ضمن اینکه هر چهار قسمت اول تا چهارم اختیاری هستند و می توانند وجود نداشته باشند بنابراین دستور زیر نیز یک دستور کاملا درست (از لحاظ دستوری) تلقی می شود :
<?php
for( ; ; );
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
این حلقه for اگر چه از نظر دستوری درست است ولی دارای یک خطای منطقی است چرا که نشاندهنده یک حلقه بی نهایت است که هیچ گاه پایان نمی پذیرد و پردازنده را تا ابد مشغول نگاه می دارد . در حقیقت نبود هر یک از این پارامتر ها به معنی انجام ندادن کار مشخصی است . حلقه بالا هیچ شمارنده ای ندارد و برای ادامه کار خود به تأمین هیچ شرطی نیز نیاز ندارد و علامت (;) آخر نیز به این معنی است که هیچ کاری انجام نده بنابراین پردازنده تا ابد مشغول انجام دادن "هیچ کاری" می شود .
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
حلقه تکرار 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 به کار رفته است و چون به صورت پسوندی به کار رفته اول عمل چاپ متغیر انجام شده و سپس یک واحد به متغیر اضافه می شود . این کد را هم اکنون امتحان کنید .
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
حلقه do - while :
این حلقه که به شکل کلی زیر نوشته می شود مانند حلقه while کار می کند با این تفاوت که شرط درستی حلقه را در آخر حلقه بررسی می کند بنابراین بدنه حلقه در هر صورتی حداقل یک بار اجرا می شود :
کد:
<?php
$cnt = 1;
do
{
echo $cnt++."<br />";
}
while($cnt<6)
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
حلقه foreach :
این حلقه بیشتر برای پیمایش آرایه ها استفاده می شود . اگر هنوز چیزی راجع به آرایه نمی دانید بهتر است ابتدا بخش آرایه ها را در همین سایت مطالعه کنید . شکل کلی به کار گیری این حلقه به صورت زیر است :
کد:
<?php
$array = new array();
//array intialization;
foreach($array as $var)
//do something;
?>
این حلقه به این شکل کار می کند که با پیمایش آرایه هر بار یکی از خانه های آنرا در متغیری بنام var میریزد و در داخل بدنه دستور foreach با متغیر var کار می کند . بار دیگر که دستور foreach اجرا می شود خانه بعدی آرایه را واکشی کرده و در var می ریزد و این ماجرا تا انتهای آرایه تکرار می شود . در زیر مثالی از کاربرد حلقه foreach را می بینید .
کد:
<?php
$cars = new array("BMW" , "Audi" , "Benz");
foreach($cars as $vehicle)
echo $vehicle."<br />";
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
آرایه چیست ؟
آرایه عبارتست از یک سری خانه های به هم پیوسته حافظه که همه آنها هم جنس هستند و با یک نام به آنها رجوع می شود .
این تعریف یک تعریف کلی در اکثر زبانهای برنامه نویسی است . البته در php شرط هم جنس بودن وجود ندارد .
مثلا فرض کنید بخواهید یک برنامه بنویسید که در آن قرار است اطلاعات یکسری از دانشجویان یک کلاس را در یکسری متغیر قرار دهیم و پردازشی روی آن انجام شود چه کار باید انجام دهیم ؟ آیا به ازاء هر دانشجو یک متغیر بگیریم ؟ آیا اصلا تعداد دانشجویان را از قبل می دانیم ؟ اگر تعداد آنها مرتب تغییر کند و پویا باشد چه ؟ اصلا فرض کنیم تعداد را هم بدانیم اگر تعداد آنها زیاد بود چه کنیم مثلا در مورد یک دانشگاه که ممکن است ده هزار نفر دانشجو داشته باشد به تعداد این متغیر ها فکر کرده اید ؟ ضمن اینکه احتمالا پردازش همه آنها شامل عملیات یکسانیست ولی با تعریف یک متغیر برای هر دانشجو عملا از کامپیوتر هیچ بهره ای نبردیم . چرا که آن عملیات را برای هر ده هزار نفر باید تکرار کنیم (یعنی کد را کپی و پیست کنیم) . حال لگر برای هر دانشجو بخواهیم فقره های اطلاعاتی مختلفی از جمله شماره دانشجویی ، نام ، نام خانوادگی و ... را ذخیره کنیم شرایط به مراتب بد تر هم می شود .
 
بالا