رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
سوال در مورد دستور switch
#1
سلام ، وقت بخیر !
تو کد پایینی   موقعی  که   favcolor=0   برابر  صفر باشه   عبارت  " Your favorite color is red "   چاپ میشه ، من فکر  می کردم دلیلش اینکه  موقع تبدیل نوع  0 به  red ، 
1 به   blue  و  2 به   green  تبدیل میشه . اما موقعی که تست می کنم اگر به  favcolor  عددی غیر از صفر بدم دستوری که  در قسمت default نوشته شده اجرا میشه ، الان سوالم اینکه  چرا موقعی که   favcolor=0  هست red انتخاب میشه ؟ 

 <?php
$favcolor = "red";

switch ($favcolor) {
   case "red":
       echo "Your favorite color is red!";
       break;
   case "blue":
       echo "Your favorite color is blue!";
       break;
   case "green":
       echo "Your favorite color is green!";
       break;
   default:
       echo "Your favorite color is neither red, blue, nor green!";
}
?> 
پاسخ
تشکر شده توسط:
#2
اگه صفر را داخل دایل کوتیشن یا کوتیشن بذاری یک رشته شناسایی میشه و این اشکال پیش نمیاد.
فکر میکنم برای اینکه این مشکل پیش نیاد همین کار روباید بکنی.
پاسخ
تشکر شده توسط: Mehran
#3
جناب راوندی ممنون از راهنمایی شما ، پی نوشت : استاد شهرکی تو فیلم اموزشی گفتن که می تونیم از دستور Settype برای تغییر نوع متغیر استفاده کنیم و صفر رو به رشته تبدیل کنیم .
 اما در اصل من سوالم اینکه   چه چیزی باعث میشه که وقتی متغیر صفر هست اولین Case  انتخاب بشه ؟ (دنبال دلیلش هستم )
پاسخ
تشکر شده توسط:
#4
دلیلش اینه که بعلت نوع متغیر که int هست، قابلیت Type Juggling در PHP سعی میکنه مقادیر case رو تبدیل به int کنه و وقتی اولین case رو میخواد تبدیل کنه، چون با عدد شروع نشده، نتیجه 0 بدست میاد و عدد با case مربوطه برابر میشه و دستوراتش رو اجرا میکنه.
پاسخ
تشکر شده توسط: Mehran




کاربران در حال بازدید این موضوع: 2 مهمان