Giới thiệu
Câu lệnh goto dùng để chuyển luồng chương trình đến một vị trí xác định trong code. Vị trí này được chỉ định bởi một label do người dùng định nghĩa. Thường goto xuất hiện như một phần của biểu thức điều kiện như if, else hoặc case (trong switch).
Cú pháp
statement1;
statement2;
if (expression)
goto label1;
statement3;
label1:
statement4;
Sau statement2, nếu biểu thức (trong if) là true, luồng chương trình nhảy đến label1. Nếu false, statement3 thực thi. Chương trình tiếp tục bình thường sau đó.
Ví dụ
Nhảy đến label nếu số chẵn
<?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";
?>
Kết quả (nhập số chẵn)
x is an even number
Tạo vòng lặp với goto
Label trong goto có thể xuất hiện trước hoặc sau câu lệnh hiện tại. Nếu label xác định câu lệnh trước đó, nó tạo thành một vòng lặp.
<?php
$x = 0;
start:
$x++;
echo "x=$x\n";
if ($x < 5)
goto start;
?>
Kết quả
x=1 x=2 x=3 x=4 x=5
Cấm nhảy vào giữa vòng lặp
Dùng goto có thể nhảy đến bất kỳ vị trí đặt tên nào. Tuy nhiên, nhảy vào giữa vòng lặp là không được phép.
<?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";
}
}
?>
Kết quả
PHP Fatal error: 'goto' into loop or switch statement is disallowed in line 5