article

دستور switch و case در PHP

php-switch-case

به طور معمول کدنویسی فرآیند تبدیل ایده های ذهنی به زبان ماشین در بستر ابزارهای یک زبان برنامه نویسی نظیر PHP است، منظور از ابزارها دستوراتی هستند که با آنها قابلیت مقایسه، شرط و در کل قدرت تصمیم گیری فراهم می شود و امکان ترجمه ایده ذهنی به شکل کدها میسر می گردد، بر این اساس هر دستوری در زبان برنامه نویسی با هدف رفع نیاز خاصی در فرآیند تبدیل ایده ذهنی به زبان کد ایجاد شده است، به طور مثال برای مقایسه کوچکتر یا بزرگتر بودن اعداد عملگرهای <> در نظر گرفته شده اند یا برای ایجاد حالت شرطی دستور if و else کاربرد دارد که این موارد را در آموزش های گذشته بررسی کردیم، در آموزش پیش رو می خواهیم به دستور دیگری تحت عنوان switch و case بپردازیم که با وجود شباهت به دستور if و else کاربردها و دستورالعمل نگارش (Syntax) خاص خود را دارد.

کاربرد دستور switch در PHP


همانطور که از معنی عبارت switch (تعویض) پیداست از این دستور برای مقایسه یک پارامتر با مورد (case) یا موارد مد نظر استفاده می کنیم و در صورت برقرار (true) بودن مقایسه کدهای قسمت case یا case های مورد نظر اجرا می شود، دستور switch و case شباهت زیادی به دستور شرطی if و else دارد و حتی بعضا به جای هم استفاده می شوند اما فلسفه پیدایش این دو از هم جدا است و در برنامه نویسی پروژه های پیشرفته کارکردی متمایز دارند، اگر بخواهیم نحوه کاربرد switch و case در PHP را با مثالی از دنیای واقعی توضیح دهیم می توانیم کتابخانه ای را فرض کنیم که با توجه به درخواست (switch) ما از بین کتاب ها (case ها) ی موجود یک یا چند مورد را انتخاب کرده و به عنوان نتیجه تحویل می دهد، یا رستورانی را تصور کنیم که از بین منوی غذاهای مختلف (به عنوان case ها) بر اساس سفارش مورد نظر (به عنوان switch) غذای مورد نظرمان را آماده می کند، هرچند تشبیه دنیای برنامه نویسی با اتفاقات زندگی روزمره دقیقا امکانپذیر نیست اما جهت تسهیل در آموزش و تبادر ذهنی می تواند مفید باشد.

شیوه نگارش (Syntax) دستور switch در PHP


شیوه نگارش یا Syntax دستور switch در PHP بی شباهت به سایر زبان های برنامه نویسی از جمله جاوا اسکریپت نیست، مشابه با جاوا اسکریپت یک متغیر برای مقایسه به switch اختصاص می یابد و از بین case های موجود یک مورد یا بیشتر انتخاب و کدهای آن اجرا می شود، به طور مثال:
<?php
$lang = 'FA';

switch($lang){
    case 'FA':
    echo 'زبان سایت فارسی است!';
    break;
    case 'EN':
    echo 'The site language is English!';
    break;
}
?>
خروجی نمونه کد بالا به صورت زیر خواهد بود:
زبان سایت فارسی است!
توضیح:
- در مثال بالا ابتدا متغیر فرضی lang برابر FA مقداردهی شده است، این مقدار می تواند به فرض از طریق آدرس URL یا فیلد input در سایت دریافت شود.
- سپس در دستور switch مقادیر متغیر lang به عنوان کلید به ترتیب با case ها مقایسه می شود، رابطه هر مورد که مقدار آن با متغیر lang برابر بود true شده و کدهای آن case اجرا می شود.
- برای مقایسه برابر بودن مقدار متغیر switch با case ها از عملگر === استفاده می شود، یعنی متغیر باید از هر لحاظ (نوع و مقدار) با case ها برابر باشد تا رابطه برقرار و نتیجه true شود.
- قسمت مربوط به break با true شدن هر case باعث پایان اجرای دستور switch و توقف جستجو در موارد بعدی می شود، در واقع وقتی در دستور switch موردی با مقادیر مشابه متغیر lang پیدا می شود مقایسه case آن true شده و قسمت break به اجرای ادامه دستورات خاتمه می دهد.
- اگر در دستور switch برای case ها از break استفاده نکنیم با true شدن یک مقایسه ادامه دستورات تا جایی که دستور break بعدی درج شده ادامه خواهد یافت و احتمالا نتایج غیرمنتظره ای در هنگام اجرای برنامه در پی دارد.
نکته: در مقایسه switch با case ها ممکن است چند case مختلف نتیجه مشترک داشته باشند، در این حالت می توانیم case ها را به صورت چندگانه در یک قسمت ترکیب کنیم، به فرض در نمونه کد زیر اگر زبان سایت فارسی یا عربی باشد جهت نوشتار راست به چپ تنظیم می شود، بر همین اساس اگر زبان سایت انگلیسی یا فرانسه باشد جهت نوشتار از چپ به راست در نظر گرفته می شود:
<?php
$lang = 'FA';

switch($lang){
    case 'FA':
    case 'AR':
    $dir = 'RTL';
    break;
    case 'EN':
    case 'FR':
    $dir = 'LTR';
    break;
}
?>

استفاده از default در دستور switch


فرض کنیم هیچ کدام از case ها با مقادیر متغیر فرضی lang همخوانی نداشته باشند در این صورت ممکن است بخواهیم به کاربر پیامی نشان دهیم یا به طور مثال بگوییم که زبان مورد نظر خود را در فیلد مربوطه وارد کند و یا هر حالتی که نیاز به یک مقدار پیش فرض داشته باشد، برای این منظور از قابلیت دیگری در switch به نام default case یا مورد پیش فرض استفاده می کنیم، به طور مثال:
<?php
$lang = '';

switch($lang){
    case 'FA':
    echo 'زبان سایت فارسی است!';
    break;
    case 'EN':
    echo 'The site language is English!';
    break;
    default:
    echo 'لطفا زبان پیش فرض سایت را انتخاب کنید!';
}
?>
خروجی نمونه کد بالا به صورت زیر خواهد بود:
لطفا زبان پیش فرض سایت را انتخاب کنید!
توضیح:
- با توجه به مثال بالا چون مقدار متغیر فرضی lang برابر خالی یا empty است و هیچ کدام از case ها چنین مقداری ندارند قسمت مربوط به default یا مورد پیش فرض اجرا می شود.
- استفاده از قسمت default اختیاری است اما بهتر است برای مواقعی که ممکن است هیچ کدام از case ها برقرار نباشند یک مقدار پیش فرض در برنامه در نظر گرفته باشیم.

استفاده از دستور switch در حالت داینامیک


در عمل دستورات PHP اغلب به شیوه داینامیک مقداردهی می شوندو کمتر حالت استاتیک کاربرد دارد، به عبارتی داده ها و خروجی های برنامه با توجه به شرایط مختلف می توانند مقادیر متفاوتی باشند، در نمونه مثال ها صرفا جهت کمک به آموزش و فهم بهتر مطلب از متغیرهای استاتیک و از پیش مقداردهی شده استفاده شده است، این مقادیر می توانند به طور مثال با توجه به آدرس URL درخواستی، شناسایی کشور کاربر از روی IP، ارسال مقادیر از طریق فرم HTML و فیلد input و یا هرآنچه که می تواند به عنوان مقادیر متغیر در برنامه دریافت شود قابل تغییر باشد که این بستگی به نیاز برنامه و هدف ما دارد، به طور مثال در نمونه کد زیر روز هفته در تابع date با توجه به تاریخ سرور با عددی متناظر بین 1 تا 7 برگردانده می شود که می توانیم با این مقدار دستور siwtch نوشته و به فرض پیامی متناسب با زمان فعلی را نمایش دهیم:
<?php
$day_of_week = date('N');

switch($day_of_week){
    case 1:
    echo 'با توجه به تاریخ سرور امروز دوشنبه است!';
    break;
    case 2:
    echo 'با توجه به تاریخ سرور امروز سه شنبه است!';
    break;
    case 3:
    echo 'با توجه به تاریخ سرور امروز چهارشنبه است!';
    break;
    case 4:
    echo 'با توجه به تاریخ سرور امروز پنجشنبه است!';
    break;
    case 5:
    echo 'با توجه به تاریخ سرور امروز جمعه است!';
    break;
    case 6:
    echo 'با توجه به تاریخ سرور امروز شنبه است!';
    break;
    case 7:
    echo 'با توجه به تاریخ سرور امروز یکشنبه است!';
    break;
    default:
    echo 'اشکالی در دریافت اطلاعات وجود دارد!';
}
?>
توضیح:
- با در نظر گرفتن پارامتر N برای تابع date در PHP مقادیر متناظر با روزهای هفته از عدد 1 (روز دوشنبه) تا عدد 7 (روز یکشنبه) با توجه به تاریخ سرور به عنوان نتیجه برگردانده می شود که می توانیم از این مقدار به عنوان switch استفاده کنیم، آشنایی بیشتر با پارامترهای تابع date:
https://www.php.net/manual/en/function.date.php

استفاده از دستور switch بدون متغیر مقایسه


در مثال ها و نمونه کدهایی که تا این قسمت از آموزش بررسی کردیم دستور switch با یک متغیر همراه بود که برای مقایسه با case ها از آن استفاده کردیم، جالب است که دستور switch و case بدون وجود این متغیر مقایسه ای نیز قابل استفاده است، به طور مثال:
<?php
$number = 20;
switch(true){
    case $number < 20:
    echo 'عدد از 20 کوچکتر است!';
    break;
    case $number > 20:
    echo 'عدد از 20 بزرگتر است!';
    break;
    case $number == 20:
    echo 'عدد با 20 برابر است!';
    break;
}
?>
خروجی نمونه کد بالا به صورت زیر خواهد بود:
عدد با 20 برابر است!
همان طور که مشخص است به جای متغیر مقایسه از عبارت true استفاده و در هر case مقادیر متغیر فرضی number را بررسی کرده ایم.

کجا از if else و کی از switch case استفاده کنیم؟!


در زبان های برنامه نویسی دستور if else و switch case هر دو جزء خانواده دستورات کنترلی (Control Statements) هستند و برای تصمیم گیری در دو یا چندراهی های برنامه ها به کار می روند، این دو شکل از دستورات قابلیت جایگزینی به جای هم را دارند یعنی یک الگوریتم را هم می توانیم با if else و هم با switch case پیاده سازی کنیم، به طور مثال:
<?php
$a = 1;

if($a == 0){
    echo 0;
} else if($a == 1){
    echo 1;
} else if($a == 2){
    echo 2;
}

switch($a) {
    case 0:
    echo 0;
    break;
    case 1:
    echo 1;
    break;
    case 2:
    echo 2;
    break;
}
?>
خروجی هر دو دستور عدد 1 خواهد بود، با این شباهت سوالی که ممکن است به ذهن خطور کند این است که کجا باید از if else و کی از switch case استفاده کنیم؟!
در پاسخ باید گفت هر دستوری با فلسفه خاصی ایجاد و معرفی گردیده تا در بهینه ترین شکل ممکن نیاز برنامه نویسان را پوشش دهد، دستورات در برنامه نویسی شبیه ابزارها در دنیای واقعی هستند، پیچ چهارسو را با آچار دوسو می توانیم باز و بسته کنیم اما قاعدتا در این حالت آچار دوسو کاربرد و مزیت های آچار استاندارد چهارسو را نخواهد داشت! به عبارتی برای کار حرفه ای ابزار حرفه ای مورد نیاز است.
با این توضیح بهینه این است که از if else در شرایط زیر استفاده کنیم:
- حالت های شرطی محدود به یک یا چند مورد باشند (با یک یا چند دستور if else کدهای مورد نیاز برنامه نوشته شوند).
- کدهایی که با true شدن شرط اجرا می شوند بیش از چند خط باشند (بهتر است کدهای طولانی را بین بلاک های if else قرار دهیم).
- بررسی و مقایسه ی بیش از یک متغیر در شرط مورد نیاز باشد (گفتیم که در دستور switch صرفا یک متغیر به عنوان کلید مقایسه استفاده می شود).
- عملیاتی به غیر از عملگر === مورد نیاز باشد (اگرچه می توانیم دستور switch را به گونه ای بنویسیم که عملگرهای مقایسه ای به جزء عملگر پیش فرض === در آن استفاده شود، اما استفاده از if else در این شرایط ساده تر است و ارجحیت دارد).
استفاده از switch case نیز در شرایط زیر ارجحیت دارد:
- حالت های شرطی بیش از چند مورد باشند (شرایطی که ناچار باشیم if else های تو در توی چند لایه تعریف کنیم).
- بررسی و مقایسه صرفا به یک متغیر (به عنوان سوئیتچ) وابسته باشد.
- زمانی که با true شدن شرط چند مقایسه نتیجه واحد را اجرا کنند (گفتیم که می توانیم از چند case متوالی برای اجرای عملیات واحد در دستور switch استفاده کنیم).
نکته: در برنامه نویسی پروژه های کاربردی گاهی تصمیم گیری برای انتخاب شیوه بهینه به دلیل وجوه مشترک دستورات دشوار می شود، در این شرایط باید توجه داشته باشیم که کدام روش مزیت های بیشتری در اختیارمان قرار می دهد، هرچند رسیدن به این مهارت تا حدود زیادی نیازمند کسب تجربه کافی در دنیای برنامه نویسی وب است.
sectionدسته بندی: آموزش مقدماتی » PHP
related مطالب بیشتر:
» آرایه (Array) در برنامه نویسی PHP
» توابع کار با آرایه در PHP - بخش اول
» توابع کار با آرایه در PHP - بخش دوم
» عملگرها (Operators) در PHP
» تعریف و استفاده از متغیر (Variable) در PHP
commentنظرات (۱۱ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: مرسده
زمان: ۱۳:۱۵:۱۵ - تاریخ: ۱۳۹۲/۰۵/۱۱
با سلام من می خوام 1 فاکتور فروش ایجاد کنم که مثلا برای کالایی با تعداد 1-10 شامل 3% تخفیف برای 11-20 شامل 5% تخفیف و ... بشه با Switch چطور میتونم این رو بنویسم. نمیدونم سوییچ برای مقادیر میانی چطور عمل می کنه. و آیا غیر از سوییچ هم راه دیگه ای هست؟
پاسخ: 
به نظر باید از دستورات شرطی به جای switch استفاده کنید، مثال:
$count = 10;
$discount = 0;
if($count <= 10){
$discount = 3;
}
elseif($count <= 20){
$discount = 5;
}
نویسنده: خلیل
زمان: ۰۲:۰۴:۴۰ - تاریخ: ۱۳۹۲/۰۷/۲۸
سلام خسته نباشین
اول از همه ممنون از مطالب زیبا و خوبتون .
من یه سوال همش تو ذهنم هست گفتم که من مبتدی هستم و از اول این اموزش ها تا اینجا همه مطالب رو خوندم بصورت ساده و جدا جدا مطرح می کنم.
اول این که برای مثال من کد html رو نوشتم و text را با پسوند html ذخیره کردم . بعد css رو در text جدید نوشتم و با پسوند css ذخیره کردم و جاوا رو هم مثل بقیه با پسوند js و php رو با پسون خودش و...... البته این سوال ذهنی من هست ولی در مورد جاوا و پی اچ پی بیشتر صدق میکنه .
این فایل های ذخیره شده را باید در کجا ذخیره کنم مثلا اپلود کنم در سایتم در کدام قسمت سایتم باشه و این که با کدام کد جاوا یا پی اچ پی رو در text , html به کار بگیرم. در این باره اگه راهنمایی کلی و به زبان ساده اموزش بدین خیلی ممنون میشم . یه سوال دیگه این هست که میشه css رو هم با این روند php , js استفاده کرد یعنی انها را جدا گانه نوشت و با یک لینک در text , html استفاده کرد . من فقط مشکل اساسی که الان دارم در همین رابطه هست . ممنونم اگه کمکم کنید . البته سوالات خیلی زیادی برام پیش امده ولی چون تا اخرین مطالب نخوندم نمیپرسم . فقط این بار سوال کردم چون خیلی ذهنم رو درگیر کرده . خیلی ممنون از زحماتتون .
پاسخ: 
درک دقیق نحوه رابطه زبان های وب با هم نیاز به کمی تمرین و تکرار بیشتر و گذشت زمان دارد، اما جهت راهنمایی:
- کدهای JavaScript و CSS را می توانید به صورت فایل خارجی یا به صورت کدهای درونی در صفحات HTML استفاده کنید (اینها در سمت کاربر و مرورگر اجرا می شوند).
- کدهای PHP برای اجرا باید در یک فایل با پسوند php ذخیره شوند و نمی توانید به صورت مستقیم در فایل HTML آن را وارد کنید، اما برعکس در یک فایل PHP می توانید در میان دستورات، از HTML استفاده کنید، باید توجه کنید که PHP یک زبان سمت سرور است، در سرور اجرا شده و صرفا خروجی به مرورگر ارسال می کند، این خروجی معمولا به صورت کدهای HTML است و لذا هرآنچه در HTML قابل استفاده باشد را می توان با PHP چاپ کرد.
- اینکه محل ذخیره سازی و قرارگیری فایل ها در هاست در کجا باشد بستگی به نحوه تعریف ساختار سایت و ارتباط فایل ها با هم دارد، چند نمونه CMS رایگان را بررسی کنید تا تجربه بیشتری در این خصوص کسب کنید.
نویسنده: خلیل
زمان: ۲۰:۳۱:۰۶ - تاریخ: ۱۳۹۲/۰۷/۲۸
خیلی ممنون از راهنمای هاتون .
نویسنده: رسول مطوری
زمان: ۱۵:۱۶:۵۰ - تاریخ: ۱۳۹۴/۰۴/۰۸
درود !
خسته نباشید ...
ممنون میشم من رو راهنمایی بفرمایید !
استفاده از case خیلی خوبه ولی وجود case های زیاد در شرط تاثیری هم روی سرعت لود و اجرا کد داره؟
امکانش هست که بشه شروط رو خلاصه تر کرد ؟
مثلا کد زیر :
<?php 
switch($sk['timeline']['degree']) {
case "1":
echo 'بی سواد';
break;
case "2":
echo 'دبستان';
break;
case "3":
echo 'سیکل';
break;
case "4":
echo 'دیپلم';
break;
case "5":
echo 'دانشجو';
break;
case "6":
echo 'فوق دیپلم';
break;
case "7":
echo 'لیسانس';
break;
case "8":
echo 'کارشناسی ارشد';
break;
case "9":
echo 'دکتری';
break;
}
?>
موردی نداره، ولی اگر بخوایم بیش از 50 case قرار بدیم نتیجه منفی نخواهد داشت ؟ چون در کدهای بالا، من اعداد 0 تا 9 رو از دیتابیس فراخوانی میکنم ، فکر میکنم درخواست های زیاد (مثلا کد بالا برای 50 نفر همزمان اجرا بشه) قطعا سایت رو دچار مشکل میکنه ...
تشکر ...
پاسخ: 
اغلب در برنامه نویسی برای رسیدن به یک مقصود روش های زیادی وجود دارد که انتخاب بهترین آنها به لحاظ افزایش خوانایی کدها در مراجعات بعدی، کوتاه تر شدن دستورات، بهبود سرعت پردازش و... نکته مهمی است، در مورد مثال شما باید ببینید آیا روش جایگزینی وجود دارد که همان هدف را پوشش دهد، پاسخ این سوال در صورتی که صرفا قصد استفاده از دستور echo را داشته باشید مثبت است و با آرایه می توان همان کار را انجام داد:
$array = array(
"1" => "بی سواد",
"2" => "دبستان",
"3" => "سیکل",
);
echo $array[$sk['timeline']['degree']];
البته به دلیل استفاده از break در دستور switch، پس از اجرای یک case، تفسیر ادامه کدها انجام نمی شود و این باعث افزایش سرعت خواهد شد (البته اختلاف در اینگونه موارد در حد میلی ثانیه و شاید هم کمتر و قابل اغماض است، اما به دلایل دیگر مانند کوتاه شدن دستورات شاید استفاده از آرایه ارجحیت دارد).
نویسنده: رسول مطوری
زمان: ۰۲:۲۳:۵۰ - تاریخ: ۱۳۹۴/۰۴/۰۹
درود !
خیلی ممنون بابت راهنمایی؛ خسته نباشید واقعا (:
تشکر ..
نویسنده: محمد
زمان: ۱۴:۰۶:۲۹ - تاریخ: ۱۳۹۴/۰۹/۲۸
سلام
امکان این هست که از case ها دوبار استفاده کنیم؟
مثلا در if میشه اینطوری شرط گذاشت:
<?php
$webgoo='test';
if($webgoo == 'test' OR $webgoo == 'te_st'){
echo 'Ok';
}elseif($webgoo == 'salam'){
echo 'salam';
}else{
echo 'error';
};
?>
مثلا می خوام عین اون شرط اول از case استفاده کنم میشه چنین چیزی؟ یعنی در یک کیس دو ورودی بررسی کنیم
یه سوال:
استفاده از elseif می تونه باعث افزایش سرعت اجرا شدن شرط ها بشه؟
سرعت کدوم بیشتره switch یا if و else ؟
ممنونم از شما
پاسخ: 
- برای اجرای یک عملیات با برقراری دو case می توان دستور را به این شکل نوشت:
<?php
$var = 0;
switch($var){
case 0:
case 1:
echo '0 or 1!';
break;
case 2:
echo '2!';
break;
}
?>
- استفاده از elseif اگر منجر به اجرا نشدن پردازش های غیر ضروری شود، قاعدتا به بهبود پردازش کل کار و در نتیجه افزایش سرعت کمک می کند، منظور از پردازش های غیر ضروری مواردی است که شرط (محتوای درون elseif) آنها برقرار نیست و در نتیجه نیازی به بررسی توسط مفسر ندارند، دستور switch و if و else تفاوت محسوسی به لحاظ سرعت ندارند و هر دو جزء دستورات اصلی و پر استفاده هستند، دلیل انتخاب یکی از حالت ها بیشتر به هدف و نیاز کار بر می گردد، به فرض اگر تعداد موارد مشابه زیاد باشد یا یک متغیر، مقادیر متعدد داشته باشد، اغلب از switch case استفاده می کنیم، اما برای تعیین شرط های اصلی یا جدا کردن بخش های مختلف یک برنامه از دستورات if و... استفاده می شود.
نکته: اغلب با استفاده از هر دو روش می توان نتیجه یکسان بدست آورد، اما به مرور متوجه خواهید شد که برای نوشتن برنامه هایی با کدنویسی خوانا تر، کدام روش در کجا مناسب تر است!
نویسنده: محمد
زمان: ۱۴:۵۹:۱۱ - تاریخ: ۱۳۹۴/۰۹/۳۰
سلام
ممنون از جوابتون، عالی بود
می خواستم بدونم اگر کدهای php رو تو یک خط بنویسیم سرعتش بیشتره یا در خط های مختلف؟
مثلا اگر کل اسکریپت در یک خط باشه سرعت بیشتری داره یا مثلا همون اسکریپت اگر در 1000 خط باشه
فرقی دارن با هم اصلا؟
پاسخ: 
حذف فاصله های خالی صرفا کمی حجم کلی فایل را کاهش می دهد و تاثیر چندانی بر روی سرعت پردازش ندارد، به نظر بهترین حالت رعایت فرم متداول در کدنویسی است، به نحوی که نه کدنویسی (از دید انسان) ناخوانا شود نه اینکه فضاهای غیرضروری و غیرمعمول در کدها باشد، البته برای مواردی که به فرض برنامه نسخه فروشی است و نمی خواهید سورس آن به راحتی توسط دیگران برداشت یا تغییر داده شود، حذف فضاهای خالی مشکلی ایجاد نمی کند!
نویسنده: محمد
زمان: ۱۶:۴۰:۳۷ - تاریخ: ۱۳۹۴/۱۰/۰۲
سلام بازم خسته نباشید ممنونم ازینکه جواب های کامل ارسال می کنید.
یه سوال درمورد سرعت:
آیا استفاده زیاد از تابع str_replace باعث کندی سرعت میشه؟
حالا اگر برای کم استفاده کردن از تابع str_replace تمام موارد رو در دو array ذخیره کنیم و در یک str_replace عمل جایگزینی رو انجام بدیم آیا باعث افزایش سرعت میشه؟
میشه در این مورد هم راهنمایی کنید؟
ممنونم از شما
پاسخ: 
طبق قاعده کلی هرچه فرآیندهای اضافه کمتر باشد، به همان میزان به بهبود سرعت پردازش کمک می شود، در اینجا نیز چون تابع str_replace یک بار فراخوانی می شود، با حالتی که چندین بار فراخوانی می شود (هرچند بسیار ناچیز!) فرق خواهد داشت، اما مهمتر از بحث سرعت، نوشتن برنامه هایی با سورس خوانا، بهینه، منعطف و قابل گسترش با حداقل کدنویسی است که این به انتخاب روش ها، بستگی زیادی دارد (تجمیع موارد مشابه در قالب آرایه، یکی از روش های بهینه است).
نویسنده: مینا
زمان: ۱۲:۳۹:۰۱ - تاریخ: ۱۳۹۴/۱۰/۲۳
سلام
من یه صفحه html دارم با یه سری کد میشه کاری کرد که با if کاری کرد در صورت برقراری شرط این کده اجرا بشه. کدهاش تقریبا 30 سطر هست
پاسخ: 
هم می توانید با استفاده از دستورات معمول PHP و هم روش زیر این کار را انجام دهید:
<?php
$some_var = 1;
if($some_var == 1){
echo <<<EOD
<div>Your HTML Code!</div>
<div>Your HTML Code!</div>
<div>Your HTML Code!</div>
EOD;
}
?>
در این روش از EOD یا Heredoc در PHP استفاده شده.
نویسنده: منا
زمان: ۱۱:۱۲:۱۱ - تاریخ: ۱۳۹۶/۰۶/۲۳
سلام من می خواهم یک صفحه php درست کنم که حاوی سوالات چند گزینه ای باشه و کاربر سوال که جواب میده یه امتیاز دریافت کنه اگر بخواهم سوالات را در آرایه قرار بدم چطور باید این کار را انجام بدم با تشکر از زحمات شما
پاسخ: 
سوالتان پاسخ کوتاهی ندارد! در واقع این یک سیستم است که باید طراحی و برنامه نویسی کنید، به طور مثال سوالات را درون یک آرایه به شکل زیر قرار دهید:
<?php
$questions = array(
1 => array(
1 => 'سوال 1',
2 => 'سوال 2',
3 => 'سوال 3',
4 => 'سوال 4'
),
2 => array(
1 => 'سوال 1',
2 => 'سوال 2',
3 => 'سوال 3',
4 => 'سوال 4'
),
3 => array(
1 => 'سوال 1',
2 => 'سوال 2',
3 => 'سوال 3',
4 => 'سوال 4'
)
);
$result = null;
foreach($questions as $key => $value){
$result .= $key . ':<br>';
for($i = 1; $i <= count($value); $i++){
$result .= $value[$i] . '<br>';
}
}
echo $result;
?>
قاعدتا برای کاربردی شدن این الگو، سایر بخش های مورد نیاز باید برنامه نویسی شوند.
نویسنده: salar
زمان: ۲۳:۴۷:۴۱ - تاریخ: ۱۳۹۸/۰۲/۱۰
سلام من این برنامه را نوشتم ولی وقتی که عدد را از 7 کوچک تر مینویسم اعداد بزرگ تر از خودش رو هم مینویسه چرا لطفا جواب بدید
<?php
$a=1;
switch( $a ) {
case 1:
echo 'one'.'<br/>';
case 2 :
echo 'two'.'<br/>';
case 3:
echo 'three'.'<br/>';
case 4:
echo 'four'.'<br/>';
case 5:
echo 'five'.'<br/>';
case 6:
echo 'six'.'<br/>';
case 7:
echo 'seven'.'<br/>';
default :
echo 'this number is not correct'.'<br/>';
}
پاسخ: 
از دستور break برای case ها استفاده نکرده اید!
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ خاصی داده نخواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لذا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.




5 × 3
 refresh
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشند که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
آخرین دیدگاه ها
form مهسا
در:
سلام وقت بخیر من یک فرم طراحی کردم input ها به صورت دو ستونه گذاشتم. میخواستم با زدن تب از input اولی در...
۱۳:۰۱:۴۶ ۱۳۹۸/۰۶/۰۲

form behzad
در:
مرسی خوب بود
۱۲:۱۵:۱۴ ۱۳۹۸/۰۶/۰۲

form zeynab
در:
سلام یه سوال دارم برای اینکه بتونم رنگ رو ذخیره کنم تو جدولم در قسمت پایگاه داده چیکار باید کنم ؟؟ من...
۱۷:۰۶:۳۵ ۱۳۹۸/۰۵/۲۸

form علی
در:
سلام من میخوام تو صفحه html همچین طرحی رو بندازم میشه راهنماییم کنید (به صورت جداگانه یعنی هر کدوم توی یه صفحه) ***** ...
۱۶:۴۶:۳۶ ۱۳۹۸/۰۵/۲۷

form Zeynab
در:
سلام . وقت بخیر . من از کدهای htaccess برای سایت استفاده کردم . روی لوکال هاست مشکلی ندارم اجرا میشن . ...
۲۲:۴۲:۵۴ ۱۳۹۸/۰۵/۲۳

form bahman
در:
عالی
۲۲:۱۵:۵۰ ۱۳۹۸/۰۵/۲۳

form Abbas rahmati
در:
سلام همه چی توی قسمت اینکه اس اس ال چطور کار میکنه درست بود فقط اخرشو درست نگفتید
۱۴:۱۶:۴۰ ۱۳۹۸/۰۵/۲۳

form مهدی فراهانی
در:
در آکولاد if، می خواهم پس از صحت پرداخت کاربر، کاربر به یک صفحه html برای دانلود فایل لینک شود. چه دستوری در حلقه if...
۱۲:۰۸:۳۲ ۱۳۹۸/۰۵/۲۳

form احسایدر
در:
شما از چه روشی برای لینک دادن به قسمت‌های نوشته استفاده کردید که با کلیک کردن چیزی به آدرس نوشته اضافه نمیشه؟
۱۸:۵۷:۰۵ ۱۳۹۸/۰۵/۲۲

form Mahyar
در:
سلام خسته نباشید اگه بخواهیم که یک pop up با کلیک به خارج از کادر pop up یا کلیک به روی دکمه esc...
۱۱:۴۸:۵۶ ۱۳۹۸/۰۵/۱۹

form بینهایت
در:
سلام. میخواستم بپرسم اگر به اینترنت جایی وصل باشیم کسی که ادرس IP رو میدونه ایا امکان داره از طریق همین اتصال به سیستم ما...
۱۰:۲۶:۱۵ ۱۳۹۸/۰۵/۱۵

form کیهان
در:
سلام دوستان من یک صفحه درست کردم که از طریق یک فرم اطلاعات رو میفرسته به این صفحه برای ذخیره در دیتابیس ولی...
۱۱:۰۰:۲۳ ۱۳۹۸/۰۵/۱۴

form مجتبی
در:
هر وقت این سایت رو می بینم سریع ازش رد میشم حالم از این سایت بهم میخوره هیچ طراحی جذابی نداره مطالبش هم بدرد نخوره
۰۹:۵۳:۴۹ ۱۳۹۸/۰۵/۱۴

form بهزاد
در:
سلام من وبلاگ درست کردم عمل هم کرده ولی الان اخطار میده که وبلاگ شما در وضعیت عدم نمایش قرار دارد. برای فعال سازیش چکار...
۱۷:۲۰:۳۷ ۱۳۹۸/۰۵/۱۳

form امیر
در:
مرسی مقاله بسیار عالی بود . فوق العاده این.
۱۰:۵۰:۳۵ ۱۳۹۸/۰۵/۰۹
49 . 1 %
در حال برنامه نویسی و آماده سازی نسخه جدید «وبگو» هستیم، در این نسخه قابلیت ها و ظاهر سایت متفاوت و کاملتر خواهد بود، این فرآیند زمانبر است و روند پیشرفت پروژه در این قسمت به صورت درصدی نمایش و به تناوب به روزرسانی می شود. Webgoo.ir