تالار گفتمان nCIS.ir

نسخه‌ی کامل: سوال در مورد دستور switch
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام ، وقت بخیر !
تو کد پایینی   موقعی  که   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!";
}
?> 
اگه صفر را داخل دایل کوتیشن یا کوتیشن بذاری یک رشته شناسایی میشه و این اشکال پیش نمیاد.
فکر میکنم برای اینکه این مشکل پیش نیاد همین کار روباید بکنی.
جناب راوندی ممنون از راهنمایی شما ، پی نوشت : استاد شهرکی تو فیلم اموزشی گفتن که می تونیم از دستور Settype برای تغییر نوع متغیر استفاده کنیم و صفر رو به رشته تبدیل کنیم .
 اما در اصل من سوالم اینکه   چه چیزی باعث میشه که وقتی متغیر صفر هست اولین Case  انتخاب بشه ؟ (دنبال دلیلش هستم )
دلیلش اینه که بعلت نوع متغیر که int هست، قابلیت Type Juggling در PHP سعی میکنه مقادیر case رو تبدیل به int کنه و وقتی اولین case رو میخواد تبدیل کنه، چون با عدد شروع نشده، نتیجه 0 بدست میاد و عدد با case مربوطه برابر میشه و دستوراتش رو اجرا میکنه.