পরিচিতি
goto স্টেটমেন্ট প্রোগ্রাম ফ্লোকে কোডের একটি নির্দিষ্ট লোকেশনে পাঠাতে ব্যবহৃত হয়। লোকেশনটি একটি ইউজার-ডিফাইনড লেবেল দিয়ে স্পেসিফাই করা হয়। সাধারণত goto স্টেটমেন্ট কন্ডিশনাল এক্সপ্রেশনের অংশ হিসেবে স্ক্রিপ্টে থাকে, যেমন if, else বা case (switch কনস্ট্রাক্টে)।
সিনট্যাক্স
statement1;
statement2;
if (expression)
goto label1;
statement3;
label1:
statement4;
statement2-এর পর, যদি এক্সপ্রেশন (if স্টেটমেন্টের অংশ হিসেবে) true হয়, তবে প্রোগ্রাম ফ্লো label1-এ নিয়ে যাওয়া হয়। যদি true না হয়, তবে statement3 এক্সিকিউট হবে। এরপর প্রোগ্রাম স্বাভাবিক ফ্লোতে চলতে থাকে।
নিচের উদাহরণে, ইউজার ইনপুট করা সংখ্যা ইভেন হলে প্রোগ্রাম নির্দিষ্ট লেবেলে জাম্প করে—
উদাহরণ
<?php
$x=(int)readline("enter a number");
if ($x%2==0)
goto abc;
echo "x is an odd number";
return;
abc:
echo "x is an even number";
?>
আউটপুট
এটি নিচের ফলাফল দেবে—
x is an even number
goto কীওয়ার্ডের সামনে লেবেল বর্তমান স্টেটমেন্টের আগে বা পরে থাকতে পারে। যদি goto স্টেটমেন্টের লেবেল একটি পূর্ববর্তী স্টেটমেন্টকে আইডেন্টিফাই করে, তবে সেটি একটি লুপ গঠন করে।
নিচের উদাহরণে goto স্টেটমেন্ট দিয়ে একটি লুপ তৈরি করা হয়েছে—
উদাহরণ
<?php
$x=0;
start:
$x++;
echo "x=$x\n";
if ($x<5)
goto start;
?>
আউটপুট
এটি নিচের ফলাফল দেবে—
x=1 x=2 x=3 x=4 x=5
goto ব্যবহার করে প্রোগ্রাম কন্ট্রোল যেকোনো নামযুক্ত লোকেশনে জাম্প করতে পারে। তবে, লুপের মাঝপথে জাম্প করা অনুমোদিত নয়।
উদাহরণ
<?php
for ($x=1; $x<=5; $x++){
if (x==3)
goto inloop;
for ($y=1;$y<=5; $y++){
inloop:
echo "x=$x y=$y\n";
}
}
?>
আউটপুট
এটি নিচের ফলাফল দেবে—
PHP Fatal error: 'goto' into loop or switch statement is disallowed in line 5