دستور switch...
۱۳۹۴/۱۲/۱۸
<?php switch (1) { case 1: $var = 'Test'; echo ' in case 1 '; break; case 2: if (isset($var)) echo '($var is set)'; echo ' in case 2 '; break; case 3: echo ' in case 3 '; break; } // Result: in case 1 switch (1) { case 1: { $var = 'Test'; echo ' in case 1 '; } case 2: if (isset($var)) echo '($var is set)'; echo ' in case 2 '; break; case 3: if (isset($var)) echo '($var is set)'; echo ' in case 3 '; break; } // Result: in case 1 ($var is set) in case 2 switch (1) { case 1: $var = 'Test'; echo ' in case 1 '; case 2: if (isset($var)) echo '($var is set)'; echo ' in case 2 '; break; case 3: if (isset($var)) echo '($var is set)'; echo ' in case 3 '; break; } // Result: in case 1 ($var is set) in case 2 switch (1) { case 1: $var = 'Test'; echo ' in case 1 '; case 2: { if (isset($var)) echo '($var is set)'; echo ' in case 2 '; } case 3: if (isset($var)) echo '($var is set)'; echo ' in case 3 '; break; } // Result: in case 1 ($var is set) in case 2 ($var is set) in case 3
در PHP، ظاهراً بودن یا نبودن اون گیومه ها {}
هیچ تاثیری در روند اجرای برنامه نداره، بلکه این break
هستش که تعیین کنندست... در حالی که در بیشتر زبانها (مثل java, pawn, c++ و...) می تونه حوزه/scope متغیر ها رو داخل هر case
تعیین کنه.
توضیح رسمی C99 درباره دستور switch
:
CASE: Case statements are only 'labels'. This means the compiler will interpret this as a JUMP DIRECTLY to the label.
BREAK: A break statement terminates execution of the smallest enclosing switch or iteration statement.
BREAK: A break statement terminates execution of the smallest enclosing switch or iteration statement.
البته این یه نکته ریزه که هنوز خیلی از برنامه نویس ها ازش مطلع نیستن
من هم بعد از 1-2 ساعت تحقیق متوجه این موضوع شدم، چراکه مستندات خودشون هم به این نکته اشاره نکردن. (تا جایی که گشتم)
۹۴/۱۲/۱۸
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.