دستورات شرطی (Conditional Statements) در PHP

دستورات شرطی (Conditional Statments) یکی از پرکاربردترین مفاهیم در دنیای زبان های برنامه نویسی و از جمله در برنامه نویسی وب و PHP به شمار می روند، در یک تعریف ساده با این دستورات برقرار یا برقرار نبودن شرطی را در یک مقایسه بررسی می کنیم و بر اساس مثبت (true) یا منفی (false) بودن پاسخ، مطابق با خواست و نیازمان در دو راهی های برنامه ها تصمیم گرفته و فرآیندی را انجام می دهیم، به طور مثال در دنیای واقعی می گوییم اگر تمرین کافی داشته باشیم موفق می شویم و در غیر اینصورت شکست خواهیم خورد یا اگر هوا کاملا صاف و آفتابی باشد به کوهنوردی می رویم در غیر اینصورت اگر هوا بارانی نبود به جنگل خواهیم رفت و در غیر اینصورت در خانه خواهیم ماند!، البته تطبیق دقیق دستورات برنامه نویسی با رویدادهای دنیای واقعی خالی از اشکال نیست اما برای شروع بد نیست بدانیم که مشابه این نوع ارزیابی ها در برنامه نویسی وب و به طور خاص در PHP با دستورات شرطی شامل if، else و elseif صورت می گیرد.
دستور شرطی if در PHP
نخستین عبارت کلیدی که در دستورات شرطی استفاده می شود "اگر" است که در برنامه نویسی به صورت "if" به کار می رود، با دستور if درستی یا نادرستی پاسخ ارزیابی شرطی را در مقایسه بررسی می کنیم، به طور مثال اگر متغیری با نام status برای تعیین وضعیت ثبت نام کاربران داشته باشیم و بخواهیم بررسی کنیم که آیا متغیر status برابر 1 است یا خیر، به صورت ساده می نویسیم: اگر (if) متغیر status برابر با 1 باشد (رابطه true باشد) دستورات بین {} را اجرا کن:
<?php
$status = 1;
if($status == 1) {
echo "کاربر گرامی شما در سایت ثبت نام کرده اید!";
}
?>
بر اساس مثال بالا مقدار پیش فرض متغیر status برابر 1 تعریف شده و بررسی رابطه if درست (true) خواهد بود در نتیجه دستورات بین علامت های {} اجرا خواهند شد، اما در مثال زیر بررسی رابطه if مقادیر نادرست (false) خواهد داشت، چرا که وضعیت ثبت نام کاربر 1 است اما در ارزیابی گفته ایم که اگر وضعیت او 1 نبود دستورات را انجام بدهد.<?php
$status = 1;
if($status != 1) {
echo "کاربر گرامی شما هنوز در سایت ثبت نام نکرده اید!";
}
?>
همانطور که در بحث عملگرها (Operators) در PHP گفتیم، عملگر == یعنی دو طرف رابطه برابر باشند و عملگر =! یعنی دو طرف رابطه برابر نباشند، در نمونه کد بالا دستورات بین علامت های {} اجرا نخواهند شد چرا که شرط آن برقرار نیست (متغیر status برابر 1 است و مقایسه نابرابر بودن آن false خواهد بود).دستور شرطی else در PHP
شاید از خود بپرسیم اگر شرط if درست (true) نشد آنوقت تکلیف چیست؟! برنامه نویس خوب باید حساب همه چیز را کرده باشد و این چیزی است که شکل پیشرفته آن را هوش مصنوعی می نامند، پس باید شرایط بعد از برقرار نبودن رابطه if را هم تعریف کنیم، برای این کار از دستور شرطی else به معنی "در غیر اینصورت" استفاده می کنیم.
else در واقع جایگزینی برای if است یعنی اگر رابطه if درست نباشد (false باشد)، آنگاه مقادیر بین علامت های {} در else اجرا می شود، مثال زیر گویا است.
<?php
$status = 1;
if($status == 0) {
echo "کاربر گرامی شما هنوز در سایت ثبت نام نکرده اید!";
} else{
echo "کاربر گرامی شما در سایت ثبت نام کرده اید!";
}
?>
نمونه کد بالا به صورت ساده اینطور تفسیر می شود:متغیر status در خط اول برابر 1 تعریف شده است، آنگاه در دستور if برابر بودن status با 0 بررسی می شود، اگر رابطه درست باشد (یعنی کاربر هنوز در سایت ثبت نام نکرده باشد)، مقادیر بین {} در بررسی if اجرا می شود و نوبت به else نمی رسد، اما اگر کاربر قبلا در سایت ثبت نام کرده باشد، ارزیابی رابطه if اول صحیح نیست (چون رابطه می گوید اگر status برابر 0 باشد در حالی که مقدار پیش فرض status را برابر 1 تنظیم کرده ایم) در نتیجه نوبت اجرای دستور else است که پیام "کاربر گرامی شما در سایت ثبت نام کرده اید!" را نمایش می دهد.
مثالی دیگر:
<?php
$country = "ایران";
$state = "شمال";
if($country != '' && $state != ''){
echo "کاربر گرامی شما از کشور $country و منطقه $state هستید.";
} else{
echo "کاربر گرامی لطفا نام کشور و منطقه را انتخاب نمائید!";
}
?>
نتیجه اجرای نمونه کد بالا به شکل زیر خواهد بود:کاربر گرامی شما از کشور ایران و منطقه شمال هستید.
برای بررسی بیشتر کافی است کد بالا را در لوکال هاست یا سرور در یک فایل PHP درج کرده و در مرورگر فراخوانی و اجرا کنیم تا نتیجه کار را ببینیم.دستور شرطی elseif در PHP
دستور elseif به معنی "در غیر اینصورت اگر" مرحله ای مابین دستور if و else است، به فرض اگر بخواهیم قبل از خاتمه دادن به شرط if با دستور else، چند ارزیابی دیگر را نیز انجام دهیم از elseif استفاده می کنیم، هر شرط elseif با نادرست شدن ارزیابی شرط if (یا elseif) قبل از خود بررسی می شود، اگر نتیجه بررسی شرط elseif نادرست و false شود قاعدتا مفسر PHP از آن عبور کرده و ادامه کدها پردازش می شوند، به طور مثال:
<?php
$num = 1000;
$max = 2000;
if($num > $max) {
echo "متغیر num از max بزرگتر است!";
} elseif($num == $max) {
echo "متغیر num با max برابر است!";
} else{
echo "متغیر num از max کوچکتر است!";
}
?>
خروجی:متغیر num از max کوچکتر است!
در نمونه کد بالا بر اساس متغیرهای تعریف شده نتیجه ارزیابی دستورات if و elseif نادرست خواهد بود و در نتیجه بخش سوم یعنی else اجرا می شود، در مثال زیر کد را به نحوی تغییر داده ایم تا قسمت دوم یعنی elseif اجرا شود:<?php
$num = 2000;
$max = 2000;
if($num > $max) {
echo "متغیر num از max بزرگتر است!";
} elseif($num == $max) {
echo "متغیر num با max برابر است!";
} else{
echo "متغیر num از max کوچکتر است!";
}
?>
خروجی:متغیر num با max برابر است!
نکته مهم اینکه از دستور elseif می توانیم به هر تعداد که بخواهیم مابین if و else استفاده کنیم، مفسر PHP به ترتیب از بالا به پائین مورد به مورد برقرار بودن رابطه آنها را بررسی کرده و اگر یکی از ارزیابی ها درست (true) باشد مقادیر داخل علامت های {} اجرا شده و سلسله دستورات شرطی در همان نقطه خاتمه پیدا می کند.<?php
$a = true;
$b = false;
$c = null;
if($a == false) {
echo '$a == false';
} elseif($b == true){
echo '$b == true';
} elseif($c != null){
echo '$c != null';
} elseif($a == false || $b == false){
echo '$a == false || $b == false';
} else{
echo 'else{}';
}
?>
قاعدتا با توضیحات ارائه شده حدس نتیجه اجرای این کد چندان سخت نیست و آخرین elseif اجرا خواهد شد چرا که متغییر b برابر false مقداردهی شده است (در غیر اینصورت اگر متغیر a برابر با true یا متغیر b برابر با false باشد).مختصرنویسی با عملگرهای سه گانه (Ternary Operators) در PHP
در برنامه نویسی پروژه های کاربردی به دلایل مختلف ممکن است نیاز به مختصرنویسی دستورات شرطی elseif ،if و else باشد که در پاسخ به این نیاز در اغلب زبان ها این هدف با عملگرهای سه گانه یا Ternary Operators تحقق می یابد، منظور از عملگرهای سه گانه ترکیب مقایسه با کاراکترهای ? و : است، در شیوه مختصرنویسی علامت ? جایگزین if و علامت : جایگزین else می شود، به طور مثال اگر دستور شرطی در حالت عادی به شکل زیر باشد:
<?php
$point = 14;
$num = 12;
if($point < $num) {
echo 'if';
} else{
echo 'else';
}
?>
شیوه مختصرنویسی آن به صورت زیر خواهد بود:<?php
$point = 14;
$num = 12;
echo ($point < $num) ? 'if' : 'else';
?>
با ترکیب و توسعه این روش حتی می توانیم دستور شرطی else if را نیز به صورت مختصرنویسی بنویسیم، به طور مثال:<?php
$point = 14;
$num = 14;
echo ($point < $num) ? 'if' : ($point <= $num) ? 'elseif' : 'else';
?>
استفاده از شیوه مختصر نویسی در برنامه نویسی دلخواه است و معمولا برای نوشتن شرط های ساده از آن استفاده می کنیم.نکته: مختصر نویسی در زبان جاوا اسکریپت با برنامه نویسی PHP از لحاظ Syntax اندکی متفاوت است.
در جاوا اسکریپت:
(point < num) ? alert('if') : (point <= num) ? alert('else if') : alert('else');
در PHP:echo ($point < $num) ? 'if' : ($point <= $num) ? 'elseif' : 'else';

دستور switch و case در PHP
آموزش برنامه نویسی وب با PHP
حلقه for، foreach و while در PHP
توابع کار با آرایه در PHP - بخش اول
توابع کار با آرایه در PHP - بخش دوم


<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo " Upload: " . $_FILES["file"]["name"] . "<br />";
echo " Type:" . $_FILES["file"]["type"] . "<br />";
echo " Size:" . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>
از لحاظ دستور نوشتنش مشکلی ندارم فقط دو تا مشکله یکیش اینکه کد هنگام لود صفحه اجرا میشه و به همین خاطر ابتدا چند تا ارور میده دوم هم اینکه متن "بزرگترین عدد کوچکترین عدد است" زیر فرم هست میخوام همه اینا بعد از وارد کردن اعداد و کلیک بر روی ارسال انجام بشه میشه راهنمایی کنید؟؟
<?php
@$form_send = $_POST['form_send'];
if($form_send == 1){
//فرم ارسال شده است، ادامه کدها را اینجا درج کنید
}
?>
در اینجا form_send نام فرضی برای فیلد hidden است!من یه صفحه html درست کردم. که یه سری مقادیر رو از کاربر میگیره و به یه صفحه ارسال میکنه با متد POST .
من میخوام روش چنین شرطی بذارم که مثلا اگه کاربر ایمیل رو وارد نکرد یه پیغام بهش بده و اگه همه چی اوکی بود اطلاعات رو به اون صفحه ارسال کنه!
ممنون
<?php
if(isset($_POST['txtStr'])){
if ($_POST['action'] == 'toLower') {
echo strtolower($_POST['txtStr']);
}
else if ($_POST['action'] == 'toUpper') {
echo strtoupper($_POST['txtStr']);
}
else if ($_POST['action'] == 'strLenght') {
echo "Total characters count: ".strlen($_POST['txtStr']);
}
}
?>
من مشکلی دارم در کدهای زیر میخوام قیمت : و عددش بیان مقابل همدیگه ولی الان قیمت : در یک خطه و قیمتش در خطه دیگه.
کدهای من :
حذف شد
ممنونمدر داخل تگ table میشه از دستور if استفاده کرد مثل
<?php
while($row=@mysql_fetch_array($result)){
echo '
<tr>
<td>'.$row['ID'].'</td>
<td>'.$row['news_title'].'</td>
<td>'.$row['news_text'].'</td>
<td>';
if($row['news_type']==1){
echo "sport";
}
elseif($row['news_type']==2){
echo "since";
}
elseif($row['news_type']==3){
echo "politice";
}
}
echo '</td>
</tr>';
?>
امکان ترکیب شرط ها هم وجود داره ؟
من چندین شرط دارم که دوست ندارم هر کدوم رو جدا بنویسم ..
نمونه :
<?php
if( $sk['timeline']['ptc'] != '000000' ) {
?>
.story-wrapper .text-wrapper{color: #<?php echo $sk['timeline']['ptc']; ?>;}
<?php
}
?>
<?php
if( $sk['timeline']['pmc'] != 'ffffff' ) {
?>
.timeline-sidebar, .story-filters-wrapper .filter {background: #<?php echo $sk['timeline']['pmc']; ?>;}
<?php
}
?>
<?php
if( $sk['timeline']['pbc'] != 'F9FAFB' ) {
?>
.timeline-statistics-wrapper .statistic:hover , .timeline-sidebar .sidebar-header-wrapper, .story-filters-wrapper .filter-header-wrapper, .timeline-sidebar .sidebar-header-wrapper {background: #<?php echo $sk['timeline']['pbc']; ?>;}
<?php
}
?>
<?php
if( $sk['timeline']['plc'] != '1975e1' ) {
?>
.plc {color: #<?php echo $sk['timeline']['plc']; ?>;}
<?php
}
?>
ممنون میشم راهنمایی بفرمایید ؟<?php
$a = 3;
$b = 5;
if($a == 3 || $b == 3){
echo 'a or b: 3!';
}
if($a == 3 && $b == 3){
echo 'a and b: 3!';
}
?>
همچنین بهتر است از تکرار تگ آغازین و پایانی PHP در صفحه تا حد امکان خودداری کنید تا کدهای خواناتری داشته باشید، همین سورس کد را می توان به صورت نمونه زیر نوشت:<?php
if($sk['timeline']['ptc'] != '000000'){
echo '.story-wrapper .text-wrapper{color: #'.$sk['timeline']['ptc'];
}
?>
میخواستم کاری کنم که پست ها در سایتم شبیه به تایم لاین، یکی در چپ و دیگری در راست قرار بگیرن!
شما استفاده از افزونه های جی کوئری رو پیشنهاد میکنید یا استفاده از شرط php؟
کدوم یک فشار کمتری به سرور وارد میکنه و تاثیر کمتری در کاهش سرعت سایت داره؟ (من از هاست اشتراکی استفاده میکنم!) و اینکه اصلا ممکنه با php شرطی نوشت که مثلا به پست های زوج یک استایل خاص رو نسبت بده و به پست های فرد یک استایل دیگر ؟
پست ها در سایت دارای ID منحصر به فرد هستن !
میشه به این شکل شرط نوشت:
اگر آیدی پست زوج بود، کلاس zoj را اضافه کن در غیر اینصورت کلاس fard را اضافه کن؟
تشکر ..
<?php
$number = 20;
$class = NULL;
if($number & 1){
$class = 'odd';
}
else{
$class = 'even';
}
echo '<div class="'.$class.'"></div>';
?>
مشابه این مثال را باید در حلقه while در هنگام خروجی از دیتابیس استفاده کنید.ببخشید من یک فایل به نام del.php
دارم و میخواهم وقتی ساعت 00:00 GMT شد
هر روز به صورت خودکار اجرا شود و دیگر نیاز نباشد دستی اجرا شود
ممنون میشم اگر راهنمایی کنید
ممنون از شما
میشه لطفا راهنماییم کنید ؟
متغییر x ما برابر با یک عدد هست مثلا 112233 و متغییر Y ما باید شامل بیش از چندین عدد باشه مثلا
112233,223344,76546544,98761245 و همینطور هزاران عدد دیگه همیشه داشت
حال میخایم شرطی بزاریم که بیاد چک کنه اگه متغییر X ما برابر با یکی از عدد های متغییر Y بود شرط رو درست اعلام کنه و اگه نبود پیام بده
مشکل من فقط با تعریف و چک کردن چندین عدد هست . یعنی همه چیزو تعریف میکنم اما متغییر Y رو نمیشه چندین عدد داد و هرچی میدم به هر روشی جدا میکنم اعم از نقطه ، ویرگول و... باز هم درست کار نمیکنه نمیدونم چرا . ممنون میشم کمکم کنید
با تشکر
http://php.net/strpos
بله حتما درس ها رو خوب گوش میدم
با این حال وقتی یه مثال بهم بدن دیگه اونقدر میشینم روش کار میکنم تا کامل یادش بگیرم اونقدر که بعدا کپی نمی کنم خودم دستی می نویسم چون اگه کپی کنم یادم نمیمونه دیگه امشب خوب بررسیش میکنم
خسته نباشی
ببخشید به نظر این سوالی که من میخوام بپرسم به این درست هم شباهت داره
چطوری میشه تو یه فایل PHP بخش های دیگر رو فراخوانی کرد.
مثلا
list.php?dars=riyazi
حتما دیدین این اسکریپت ها رو که کل فایل ها رو تو یه فایل جم کردن یعنی همش تو فایل مثلا همین list.php دیگه واسه ریاضی نمیاد riyazi.php farsi.php و...این پایین کلا اشتباه ولی میذارم تا منظورم رو بهتر متوجه بشید
<?php
if
{
header('location:list.php?dars=riyazi');
echo "salam";
}
?>
الان یعنی لیست اگر درسش برابر با ریاضی بود سلام رو نشون بدهخواهشا کمک کنید فقط مثال بزنید برام با نمونه کد خودم نگاه میکنم یاد میگیرم
$lesson = $_GET['dars'];
if($lesson == 'riyazi'){
//کدهای شما
}
elseif($lesson == 'fizik'){
//کدهای شما
}
elseif($lesson == 'honar'){
//کدهای شما
}
else{
//کدهای شما
}
اگر آموزش های مقدماتی را قدم به قدم مطالعه کنید، با مشکلات اینچنین کمتر مواجه می شوید.خیلی کارمو راه انداختین
دلم نیومد تشکر نکنم
من دنبال یک تابعی در php می گردم که مثال
به عدد 250000
7 درصد سود اضافه کنه
ممنون می شم راهنماییم کنید
با تشکر
<?php
$num = 250000;
function addPercent($num, $percent, $type){
$add = ($num / 100) * $percent;
$result = $num + $add;
if($type == 'percent'){
return $add;
}
return $result;
}
echo addPercent($num, 7, NULL);
echo '<br>';
echo addPercent($num, 7, 'percent');
?>
با تشکر
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.