break, continue و goto در PHP

در این مقاله به بررسی سه کلمه کلیدی در برنامه نویسی PHP می پردازیم. کاربرد آنها چیست و چگونه از آنها استفاده کنیم. قبل از بررسی آنها، باید بگوییم از این کلمات کلیدی در حلقه ها و شرط ها استفاده خواهد شد. بنابراین تا پایان مقاله با ما همراه باشید.

کلید واژه break

این کلمه کلیدی را می توان در داخل حلقه ها به کار گرفت. این کار به اجرای حلقه خاتمه می دهد. مثال زیر را ببینید:

$numbers = [1, 2, 3, 4, 5];

for ($i = 0; $i < count($numbers); $i++) {
    if ($numbers[$i] == 3) {
        break;
    }
    echo $i . ' ';
}

در مثال بالا آرایه numbers را با حلقه for پیمایش میکنیم. قطعا برای این آرایه که دارای 5 عنصر است، 5 تکرار خواهیم داشت. در هرجایی که حلقه در حال تکرار است اگر عدد برابر 3 باشد، از حلقه تکرار خارج می شویم. در مثال ذکر شده این کار باعث می شود که بعد از 3 تکرار از حلقه خارج شویم و دو عنصر بعدی آرایه را بررسی نکنیم.

مثال دیگری از break را بررسی می کنیم. کد زیر را ببینید:

for (;;) {
    break;
}

حلقه بی نهایت for در اولین اجرای خود متوقف می شود. البته می تواند یک آرگومان عددی هم به break اضافه کرد تا تعیین شود که بعد از چه تعداد ساختار حلقه ای تو در تو را خاتمه داده و اجرای آنها را متوقف نماید. مثال زیر را ببینید.

$i = 0;
while ($i++ < 10) {
    for (;;) {
        break 2;
    }
}

break موجود در حلقه for علاوه بر خاتمه دادن به for بلکه حلقه while را هم متوقف خواهد کرد.

کلمه کلیدی continue

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

مثالی برای continue. فرض کنید آرایه ای از اعداد داریم. می خواهیم تمام اعداد بزرگتر از 10 را در خروجی چاپ کنیم. کد زیر را ببینید.

$numbers = [20, 5, 8, 54, 14, 1, 6, 22];

foreach ($numbers as $num) {
    if ($num <= 10) {
        continue;
    }
    echo $num . ' ';
}

در کد بالا ابتدای حلقه foreach بررسی می کنیم که آیا عدد کوچکتر یا مساوی 10 می باشد یا خیر. اگر شرط درست باشد if اجرا می شود و مسلما continue نیز اجرا می شود. اجرا شدن continue باعث می شود که تکرار جاری حلقه در همان نقطه پایان گیرد و حلقه foreach تکرار بعدی را بررسی کند. اما اگر عدد از 10 بزرگتر باشد if اجرا نخواهد شد و دستور بعدی که echo می باشد اجر می شود.

بنابراین در خروجی اعداد 20 54 14 و 22 چاپ خواهند شد.

نکته قابل توجه درباره کلمه کلیدی continue استفاده آن در دستور switch است. continue در switch همانند break عمل می کند. همچنین می تواند بعد از continue آرگومان عددی نیز به کار گرفت.

$i = 0;

while ($i++ < 10) {
    switch($i) {
        case 1:
            continue 2;
    }
}

کلمه کلیدی goto

دستور goto در php 5.3 معرفی شد. این دستور یک پرش به برچسب یا label مشخص شده را انجام می دهد.

goto my_label_name;

my_label_name:
foreach ([1, 2, 3] as $row) {
    echo $row . ' ';
}

در بالا برچسب یا label مشخص شده نام دلخواه شما می باشد که در این مثال my_label_name انتخاب شده است. توجه داشته باشید که  برچسب هدف باید در همان فایل اسکریپت و حوزه (scope) باشد. بنابراین از دستور goto نمی توان برای پرش به داخل حلقه ها به کار گرفت و تنها می توان از آنها برای خروج از حلقه استفاده استفاده کرد.

نکته مهم دیگر در رابطه با دستور goto این است که تا حد امکان از آن استفاده نشود. کسی که با سبک ها و متد های امروزی، برنامه نویسی می کند مسلما با این دستور در شرایط خاص مواجه خواهد شد. دلیل این امر این است که دستور goto می تواند روند برنامه را تغییر دهد و امکان خطا را بالا می برد یا حتی در شرایط خاصی عملکرد برنامه را تحت تاثیر بگذارد. بنابراین باعث میشود debug کردن برنامه هم به چالش کشیده شود. بنابراین پیشنهاد می شود تا حد امکان از این دستور استفاده نکنید.

منبع: سایت it3du