انجمن‌های فارس وب

نسخه کامل: آموزش php - از آغاز تا پايان (بخش چهارم)
شما در حال بازدید از بایگانی ارسال های انجمن هستید این نسخه کامل نیست : برای مشاهده نسخه کامل اینجا کلیک کنید
عنوان مقاله: شرط ها در زبان برنامه نويسي php
سطح مقاله: تخصصي
منبع: انجمن هاي فارس وب ([ جهت مشاهده لينك عضو شويد ! ])


تو این قسمت می خوام در مورد شرط ها با هم صحبت کنیم . به نظر من شرط ها پا های هر زبان برنامه نویسی هستند که بدون اونها راه رفتن غیر ممکن و زندگی مشکله !

در نظر بگیرید ، شما برای خرید یک لباس سلیقه ای دارید و برای رسیدن به لباس مورد نظرتون شرط هايی می ذارید : "اگه" سفید باشه ، سیاه نباشه ، نازک نباشه ، کلفت اما گشاد نباشه ، از کلمات "باشه" و "نباشه" استفاده می کنید و گاهاً دوست دارید در صورتی لباس رو بخرید که هم سبز "و" هم کوتاه باشه و گاهاً حالا اگه سبز "یا" سرمه ای "هست" موردی نداره بخریدش یا "نه" مشکی باشه و "نه" آبی ، اگه سیاه "نيست" می خرم ، "وگر نه" آبی رو بر می دارم. ما در تمام زبان هاي برنامه نويسي برای کلمات بالا که داخل کوتیشن نوشتم معادلی داریم که در php به صورت زیر هستش :

اگه : if
باشه : ==
نباشه : =!
و : and (&&)
یا : or (||)
نه : not (!)
وگر نه : else
هست: true
نيست: false

به طور كلي همه ي شرط ها داراي عبارت شرط و بدنه ي شرط هستن كه عبارت شرط ، شرط رو اعلام و در صورت درست بودن ، دستورات داخل بدنه اجرا مي شن. دو كلمه ي كليدي true و false هم هستند كه همانند معناشون true به صحت يا ادامه ي كار اطلاق مي شه و false هم به نادرستي و يا اتمام كار. براي مثال ؛ اگه فارس وب از نظر شما سايت خوبي باشه ، مقدار true و در غير اين صورت مقدارfalse برگردونده مي شه! انواع شرط ها رو با هم بررسي مي كنيم:

1- شرط ساده با if : اين شرط زماني كاربرد داره كه بيشتر مقدار درستي و يا نادرستي چيزي رو چك مي كنيم يا اينكه مد نظر ما فقط يك گزينه هستش.

if ($pirhan == "ghermez")
  echo 
"oh man ke perspolisi nistam !"

تحلیل کد : در اينجا اگه متغير pirhan$ برابر با مقدار رشته ي "ghermez" باشه ، دستور echo اجرا مي شه (مقدار درست يا true) و اگر نباشه (مقدار نادرست يا false) هيچ اتفاقي نمي افته ، لازمه كه شما قبلاً به متغير pirhan$ مقداري رو اختصاص بدين ، در غير اين صورت متغير pirhan$ حاوي مقدار صفر (0) يا تهي هستش.

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

if ($pirhan == "ghermez") {
  echo 
"oh man ke perspolisi nistam !";
  echo 
"bazam migam nistaaaaaaamm!";

در كد بالا در صورت برقراري شرط هر دو دستور echo اجرا مي شن و در اگه شرط برقرار نباشه هيچ كدوم اجرا نمي شن ؛ ولي در كد پايين در هر صورت دستور echo دوم اجرا و دستور echo اول تابع شرط هستش‌:

if ($pirhan == "ghermez"
  echo 
"oh man ke perspolisi nistam !";
  echo 
"bazam migam nistaaaaaaamm!"

نکته 2: همونطور كه ديدين بدنه ي شرط ({ }) ؛ قسمتي كه دستورات نوشته مي شن با آكولاد باز و بسته مي شه ، شما مي تونيد به جاي باز و بسته كردن آكولاد از : و ;endif استفاده كنيد ، مثال بالا رو بنا به اين نوع نگارش مي بينيم (در هر صورت دستور echo دوم اجرا و دستور echo اول تابع شرط هستش‌):

if ($pirhan == "ghermez") :
  echo 
"oh man ke perspolisi nistam !";
endif; 
  echo 
"bazam migam nistaaaaaaamm!"

نکته 3: به نحوه ي قرار گيري ; (سمي كولن - semicolon) ها در انتهاي دستورات تمام مثال ها دقت كنيد.

2- شرط ساده if به همراه else : اين شرط زماني كاربرد داره كه حتماً يك نتيجه رو لازم داريم .

if ($pirhan == "ghermez") {
  print 
"pirhan ghermez hast!";
} else {
  print 
"pirhan ghermez nist!";

تحلیل کد : اين اسكريپت مفهومش اينه كه اگه متغير pirhan$ برابر با رشته ي "ghermez" باشه عبارت !pirhan ghermez hast رو براي ما چاپ مي كنه ؛ در غير اين صورت عبارت !pirhan ghermez nist چاپ خواهد شد.

نکته: اينجا هم چون بعد از if و بعد از else تنها يك دستور داشتيم ، نيازي به استفاده از بلاك شرط ({}) نبود ، همينطور مي تونيم بعد از else (اگر نه) يك شرط يا چند شرط ديگه بذاريم ، حالا اين مثال رو جور ديگه اي نشون مي دم:

if (!($adad)) {
  echo 
"adad ta'rif nashode!";    
} else {
if (
$adad == 1) echo "adad = 1 hast!";
if (
$adad == 2) echo "adad = 2 hast!";
if (
$adad == 3) echo "adad = 3 hast!";

تحلیل کد : شرط ((if (!($adad معنيش اينه كه "اگه متغير adad$ وجود نداره" ، همونطور كه گفتم علامت ! يا عبارت not به معني نفي شرط هستش "اگر وجود نداره" ، خوب واضح هستش در صورت عدم وجود متغير adad$ و يا صفر (0) بودنش عبارت شرط true مي شه و عبارت "adad ta'rif nashode" نمايش داده مي شه و در غير اينصورت ، يعني false بودن عبارت شرط و زماني كه متغير adad$ حاوي مقدار ياشه ، 3 شرط ديگه بررسي مي شه.

3- شرط با الگوي else if : زماني از اين الگو استفاده مي كنيم كه در يك شرط نياز به استفاده از يك يا چند شرط زير مجموعه باشه.

if ($pirhan == 'ghermez') {
  echo 
'pirhan ghermez ast!';    
} else if (
$pirhan == 'abi') {
  echo 
'pirhan abi ast!';
} else {
  print 
'range pirhan moshakhas nist!';

تحلیل کد : اگه متغير pirhan$ برابر با رشته ي "ghermez" باشه عبارت !pirhan ghermez ast چاپ مي شه ، ولي اگه اين شرط برقرار (true) نباشه باز با يك شرط ديگه كه شبيه شرط نوع دوم هست روبرو مي شيم كه فكر مي كنم به راحتي قابل درك باشه ، شما مي تونين شرط ها رو تا جايي كه لازمه تو در تو بنويسيد.

نکته: عبارت else if رو مي شه با هم يعني به صورت elseif هم نوشت.

4- شرط با دستور switch : اين نوع شرط به نظر من يك if و چندين else if و در نهايت يك else هستش ؛ ولي به صورت سازماندهي شده كه كار رو براي برنامه نويس راحت مي كنه ، به مثال زير نگاه كنيد:

switch ($pirhan) {
   case 
"aabi":
     echo 
"taraf esteghlaliye!";
     break;
   case 
"ghermez":
     echo 
'taraf perspolisiye!';
     break;
case 
"sefid":
     echo 
'taraf malavaniye!';
     break;
   default:
     echo 
"range pirhan ma'loom nist!";

تحلیل کد : عبارت (switch ($pirhan يعني مقصود ما متغير pirhan$ هستش ، عبارت :"case "aabi يعني "اگه متغير pirhan$ برابر با عبارت aabi باشه" و به عبارتي يعني ("if($pirhan=="aabi ، بعد از اين عبارت دستور echo اومده كه مي شه چندين دستور به كار برد ، كلمه ي كليدي break هم به معناي انتهاي دستورات اون شرط هستش و عبارت :default هم مي شه گفت مفهوم else رو داره كه اگه هيچ كدوم از دستوراي به كار برده شده درست يا true نبودند و اجرا نشدن ، دستور يا دستورات بعد از :default اجرا بشه. حالا همين دستور رو با فرم if و elseif و else مي نويسم:

if($pirhan=="aabi")  echo "taraf esteghlaliye!";
elseif (
$pirhan=="ghermez") echo 'taraf perspolisiye!';
elseif (
$pirhan=="sefid") echo 'taraf malavaniye!';
else echo 
"range pirhan ma'loom nist!"

نکته: دستور switch مي تونه چند تا case داشته باشه ، به اين ترتيب هر كدوم از گزبنه هاي case كه برقرار باشن ، اون بلوك دستورات اجرا و از اجراي ادامه ي دستورات صرفنظر مي شه (break) .

5- شرط با الگوي ? و : : اين نوع خلاصه شده ي if و else ساده هستش كه تنها كارش اينه كه با توجه به شرط ، مقادير خاصي رو به يك متغير اختصاص مي ده .

$perspolisi = ($pirhan == 'ghermez') ?  'yes' 'no'

تحلیل کد : در صورتي كه شرط ('pirhan == 'ghermez$) بر قرار باشه ، يعني متغير pirhan$ برابر با رشته ي "ghermez" باشه ، اولين مقدار بعد از ? به متغير perspolisi$ اختصاص پيدا مي كنه و در غير اين صورت ، يعني عدم برقراري شرط ، عبارت بعد از : به متغير perspolisi$ نسبت داده مي شه. براي روشن شدن بهتر موضوع من همين شرط رو با الگوي if و else تكرار مي كنم:

if($pirhan == 'ghermez'$perspolisi 'yes'; else $perspolisi 'no'


توابع ()isset و ()empty : اين دو تابعي هستد كه معمولاً در شروط براي صحت وجود و يا عدم وجود يك متغير و يا يك مقدار استفاده مي شن ، اين توابع به صورت محض عمل مي كنند ، يعني حتي به مقدار false و يا صفر (0) هم حساس هستن و فقط زماني كه متغيرها تهي بوده و يا تعريف نشده باشن به حساب نميان و مقدار false برگردونده مي شه ، طريقه ي استفاده ي اين دو تابع به صورت زير هستش:

$Bonyanalam false;

if (isset(
$Bonyanalam))   echo "Bonyanalam is alive!";
 elseif (empty(
$Bonyanalam)) echo "Bonyanalam is not alive!"

تحلیل کد : شرط ((isset($Bonyanalam) به اين معني هستش كه "اگه متغير Bonyanalam$ مقداري رو در بر داره" همونطور كه گفتم ؛ مقادير صفر و يا false هم براي اين توابع يك مقدار به حساب مياد ، پس اين شرط برقرار و عبارت !Bonyanalam is alive برگردوده مي شه ، همينطور شرط ((empty($Bonyanalam) به معني اينه كه "اگه متغير Bonyanalam$ تهي يا تعريف نشده باشه" . دقت داشته باشيد كه شرط (if (isset($Bonyanalam با (if ($Bonyanalam و همونطور شرط (if (empty($Bonyanalam با (if (!($Bonyanalam تفاوت هايي دارند.

مثال هاي تكميلي: براي آشنايي بيشتر شما چند نمونه مثال مي زنم :

مثال 1‌: فرض كنيم كدي لازم داريم كه با توجه به سن وارد شده ، رده ي سني رو به ما اعلام كنه:

$age 55;

if (empty(
$age)) echo "سن مشخص نشده !";
  elseif (
$age 6) echo "اين سن كودك است !";
  elseif (
$age 9) echo "اين سن نو نهال است !";
  elseif (
$age 17) echo "اين سن نوجوان است !";
  elseif (
$age 40) echo "اين سن جوان است !";
  elseif(
$age 50) echo "اين سن ميانسال است !";
  elseif(
$age 100) echo "اين سن پيرمرد است !";
else echo 
"خدا بيامرزه !"


تحلیل کد : همونطور كه مي دونيد ((if (empty($age به اين معنيه كه "اگه متغير age$ تعريف نشده باشه" و در شرط ها هم از علامت كوچكتر (>) استفاده شده ، (elseif($age < 100 يعني اگر نه ، اگه متغير age$ كوچكتر از 100 باشه . به عنوان تمرين پيشنهاد مي كنم همچين برنامه اي رو با اوقات روز (ظهر ، عصر ، شب و ...) بنويسيد و دوباره كد رو با استفاده از دستور شرطي switch بازنويسي كنيد.

مثال 2: حالا فرض كنيم ما لازم داريم كه فقط بفهميم سن وارد شده ، سن يك نوجوان هست يا نه ، به اسكريپت زير نگاه كنيد:

$age 15;

if ((
$age >= 9) && ($age 18))   echo "اين سن نوجوان است !";
else echo 
"اين سن نوجوان نيست !"

تحلیل کد : در صورتي كه متغير age$ بزرگتر مساوي 9 و كوچكتر از 18 باشه ، عبارت شرط درست يا true خواهد شد و عبارت "اين سن نوجوان است !" براي شما ظاهر مي شه. همونطور كه در اول اين مقاله توضيح دادم ، علامت && يا عبارت and به معني "و" يا اجتماع چند شرط هستش . شما مي تونين بقيه ي علائم و عبارات شرطي رو به همين صورت به جهت تمرين امتحان كنيد .

تا به حال شروط ما شامل اعمال مقايسه اي و دستورات ما شامل دستور echo بودن ! شما مي تونين از دستورات ، توابع و حتي شرط ها براي دستورات شرطي استفاده كنيد! رفته رفته شرط ها رو به نسبت بسط مي دم و اونها رو با توابع و دستورات تكرار تركيب مي كنم ، فقط اگه شما تمرين و مطالعه ي كافي نداشته باشين ، مطمئناً نمي تونين اونطور كه بايد پيش برين!

اين بود بخش چهارم ! اميدوارم تو زندگي فقط براي موفقيت خودتون شرط بذاريد و براي ديگران از شرط و شروط استفاده نكنيد !‌

موفق باشيد.


این مقاله آموزشی برای اولین بار در انجمن هاي فارس وب ([ جهت مشاهده لينك عضو شويد ! ]) و به زبان شيرين فارسي نوشته شده است . لطفا" با کپی های بدون منبع مطالب ، زحمات نویسنده ی آن مطلب را خدشه دار نکنید .
سلام دوست عزیز ممنون از آموزشای خوبت

اما ممنون میشم کمی واضح تر و روان تر آموزشاتو بنویسی که دیگه هیچ مشکلی نباشه و راحت بشه مطالبو درک کرد و مثال های کاربردی تر بزنید تا برسیم به PHP/MySQL و این زبان برنامه نویسی رو به خوبی از شما یاد بگیریم

ممنون دوست عزیز

راستی خیلی بهتره اگه زودتر جلو بریم و بیشتر رسیدگی کنید جناب آقای Bonyanalam
بنده اين مجموعه مقالات رو با وسواس بسيار زياد و با فرض اينكه دوستان علاقمند به زبان php با هيچ زبان برنامه نويسي آشنايي نداشتند ، تاليف كردم . تحقيق و تمرين به عهده ي نو آموزان هستش ؛ با اين وجود از پرسيدن كوچكترين سوال در مورد بخش هايي كه براي شما ثقيل بوده ، اجتناب نکنید. در مورد روند كار هم فكر مي كنم به علت تمركزم روي تمام انجمن ها و نبودن علاقمند كافي ، به همين صورت كند ادامه پيدا كنه.
سلام ، من نگفتم بده توضیحات شما ولی میتونه خیلی روان تر و کامل تر باشه

راجب به کندی هم باید عرض کنم : خود من هر سایتی رفتم هر انجمنی رفتم چه خوب یا بد ، مطالب آموزش PHP/MySQL به همین صورت نصفه نیمه بود و کند پیش میرفت و منم واسه همین که میدیدم اینارو بلدم و احتیاجی ندارم اون سایتو ول میکردم و میرفتیم دنباله سایت بعدی . و متاسفانه همه جا نوشتن که آموزش PHP , MYSQL اما طوری شده که نصفه نیمه رها شده و به پی اچ پی و دیتابیس نمیرسه :D

واسه همین میگم که اگه آموزش های سرعتر جلو بره مطالب بیشتر بشه و به جاهای بهتر مثلاً ارتباط PHP با MySql و مثلاً نوشتن یک سیستم خبر خوب همین باعث انگیزه همه دوستان میشه که آموزشو دنبال کنن

در هر صورت ممنون میشم اگر سرعت آموزش ها رو بالا ببرید

من هم تا جایی که علم داشته باشم مطالب تو سایت قرار میدم
موفق باشید

منتظر جلسه های بعد و بعد تر .................. هستیمممممم
خوب ادامش .... ؟؟؟ ادامه نداره ؟
دوست من ؛ لطفاً به فرهنگ انجمن ها هم توجهي داشته باشيد: "14 - گفتار هر فرد می بایست برای خود یا دیگران مفید واقع شود ؛ انجمن یک اتاق چت يا كامنتينگ وبلاگ نیست !"

بهتره بازتاب اصرار شما به ادامه ي آموزش به صورت خصوصي انجام بشه كه مطمئناً پيغامي كه به بنده فرستاديد كفايت مي كنه .

با تشكر.
سلاملبخند
ادامه نداره مطلب مفیدتونهوم
بابا یکی این php رو کامل بگه دیگه،من فقط اینطوری میتونم یاد بگیرمگریان
بهتر و ایمن تره لبخند اگر شروع و پایان تمام تگ ها و بلاک ها رو مشخص کنید و کامل ببندید آره:
مثلاً:
[align=left]

if(...): ...
endif;

if(...): ...
elseif(...): ...
else: ...
endif;

if(...)
{
...
};

if(...)
{
}
else
{
};

while(...):
endwhile;

while(...):
{
};

foreach...
for...
... 

[/align[/color]]

سلام
عالي بود. درمورد ارتباط با بانك اطلاعاتي هم مطلبي داريد (ارتباط php با بانكها)؟
موفق باشيد
مرجع آدرس ها