طراحی وب سایت کتابخانه

طراحی وب سایت کتابخانه

ساختار switch

شنبه, ۱۶ خرداد ۱۳۹۴، ۱۲:۵۹ ب.ظ

     ساختار switch مانند استفاده از چندین عبارت IF در مورد یک عبارت عمل می کند. در بسیاری از موارد، ممکن است بخواهید یک متغیر (یا عبارت) را با چندین مقدار مقایسه کنید، و متناسب با اینکه متغیر شما با چه مقادیری برابری می کند، قطعه کد خاصی را اجرا نمایید. در این حالت دقیقا باید از دستور switch استفاده کنید.

     توجه داشته باشید که بر خلاف برخی دیگر از زبان های برنامه نویسی، عبارت continue برای ساختار switch عمل می کند و رفتار آن همانند دستور break است. اگر شما یک دستور switch در داخل حلقه خود دارید و می خواهید به تکرار بعدی مربوط به حلقه خارجی بروید از دستور continue 2 استفاده کنید.

     دو مثال زیر دو نمونه متفاوت از نوشتن یک مثال است، که در مثال اول مجموعه ای از ifها و elseifها آورده شده است، و در دیگری از دستور switch استفاده شده است:

مثال

<?php
if ($i == 0) {
    echo "i equals 0";
} elseif ($i == 1) {
    echo "i equals 1";
} elseif ($i == 2) {
    echo "i equals 2";
}

switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
}
?>

مثال دیگر

<?php
switch ($i) {
    case "apple":
        echo "i is apple";
        break;
    case "bar":
        echo "i is bar";
        break;
    case "cake":
        echo "i is cake";
        break;
}
?>

     مهم است که بدانید عبارت switch به چه ترتیبی اجرا می شود تا از بروز خطا جلوگیری کنید. عبارت switch به صورت خط به خط اجرا می شود (در اصل عبارت به عبارت). در ابتدا، هیچ کدی اجرا نمی شود. فقط زمانی که یک عبارت case پیدا می شود که مقدار آن با مقدار عبارت switch برابر است، پی اچ پی شروع به اجرای عبارت می کند. پی اچ پی اجرای عبارت (ها) را تا زمانی ادامه می دهد که به انتهای قطعه switch برسد، یا تا زمانی که به اولین دستور break برخورد نماید. اگر شما دستور break را در انتهای عبارت case ننوشته باشید، پی اچ پی به سراغ اجرای عبارت های قسمت بعدی case می رود:

<?php
switch ($i) {
    case 0:
        echo "i equals 0";
    case 1:
        echo "i equals 1";
    case 2:
        echo "i equals 2";
}
?>

     در مثال بالا اگر مقدار متغیر $i برابر با صفر باشد، پی اچ پی تمام عبارت های echo را اجرا می کند! اگر مقدار متغیر $i برابر با یک باشد، پی اچ پی دو عبارت آخر echoرا اجرا خواهد کرد. شما فقط زمانی رفتار مورد انتظار را مشاهده می کنید که مقدار متغیر $i برابر با دو باشد. بنابراین مهم است که عبارت break را فراموش نکنید (مگر اینکه در شرایط خاصی برای رسیدن به یک هدف خاص، از بکار بردن این عبارت خودداری کنید).

     در ک عبارت switch، شرط فقط یک مرتبه بررسی می شود و نتیجه با هر کدام از عبارت های case مقایسه می شود. در یک عبارت elseif، شرط دوباره بررسی می شد. اگر شرط شما از یک مقایسه ساده پیچیده تر است و یا در داخل یک حلقه بسته قرار دارد، یک عبارت switch می تواند سریع تر باشد.

     
<?php
switch ($i) {
case 0:
case 1:
case 2:
    echo "i is less than 3 but not negative";
    break;
case 3:
    echo "i is 3";
}
?>

     یک عبارت case خاص، default است. این عبارت زمانی نشان داده می شود که سایر عبارت های case با شرط، تطابق نداشته باشند. به عنوان مثال:

<?php
switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
       echo "i is not equal to 0, 1 or 2";
}
?>

     یک عبارت case می تواند هر نوع عبارتی باشد که با یک نوع ساده سنجیده می شود، یعنی یک عدد صحیح، عدد اعشاری و رشته. در اینجا نمی توان از آرایه ها یا اشیاء استفاده کرد، مگر اینکه آنها را به یک نوع ساده ارجاع داده باشیم.

     ساختار نحوی جایگزین برای ساختارهای کنترلی در ساختار switch پشتیبانی می شود.

<?php
switch ($i):
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
        echo "i is not equal to 0, 1 or 2";
endswitch;
?>

     می توان از علامت نقطه ویرگول به جای علامت دونقطه بعد از عبارت case استفاده کرد:

<?php
switch($beer)
{
    case 'tuborg';
    case 'carlsberg';
    case 'heineken';
        echo 'Good choice';
    break;
    default;
        echo 'Please make a new selection...';
    break;
}
?>
موافقین ۱ مخالفین ۰ ۹۴/۰۳/۱۶
مهرداد یوسفی فرد

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی