• 2 رای - 2.5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
دستور switch...
#1
کد پی‌اچ‌پی:
<?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، ظاهراً بودن یا نبودن اون گیومه ها {} هیچ تاثیری نداره، در حالی که در بیشتر زبانها (مثل java, pawn, c++ و...) می تونه حوزه/scope متغیر ها رو داخل هر case تعیین کنه...

[عکس: gjapyi7lban85qdu4t7j.jpg]

توضیح رسمی 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.
...

البته این یه نکته ریزه که هنوز خیلی از برنامه نویس ها ازش مطلع نیستن
من هم بعد از 1-2 ساعت تحقیق متوجه این قابلیت شدم، چراکه مستندات خودشون هم به این نکته اشاره نکردن. (تا جایی که گشتم)
وبلاگ: Yousha.Blog.ir


کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بیشتر => نگهداری بهتر
  پاسخ
تشکر شده توسط : sara147 Alaa
#2
php رو نباید با جاوا یا c مقایسه کنید. php فقط یک زبان اسکریپت نویسیه. Sleepy
از این دست مسائل در php کم نیستن.
به یـزدان که گر ما خرد داشتیم
کجـا این سر انجـام بد داشتیم؟
  پاسخ
تشکر شده توسط :
#3
با سلام

یکسری توضیح
اگر در دستور switch و در هر آخر هر case با دستور break بسته نشه دستورات بعدی اجرا می شوند
و در خصوص {} این نکته رو اضافه کنم مثل زبان برنامه نویسی c ، اگر دستور تک دستوری باشه میتونیم {} رو استفاده نکنیم

مثل
کد:
if(1)
echo "hi";
else
echo "bye";

اما اگر بیشتر از یک دستور باشه باید حتما از {} استفاده کنیم در غیر اینصورت با مشکل برمیخوریم

مثل
کد:
if(1)
{
echo "hi";
echo "hello";
}
else
{
echo "bye";
echo "bye bye";
}
  پاسخ
تشکر شده توسط :
#4
Dodgy
به یـزدان که گر ما خرد داشتیم
کجـا این سر انجـام بد داشتیم؟
  پاسخ
تشکر شده توسط :
#5
Huh
غایب
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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