PHP goto语句

2023-10-18 171

goto 操作符用于在程序中跳转到指定位置,目标位置可以使用区分大小写的标记名称加上冒号来标识,而跳转指令则是在 goto 后面跟上目标位置的标记。

PHP 中的 goto 有一些限制,目标位置只能位于同一个文件和作用域内,也就代表着无法跳出一个函数或类方法,也无法跳入另一个函数。此外,也无法跳入任何循环或 switch 结构中。但是,可以使用 goto 代替多层的 break 语句来跳出循环或 switch。

一、goto语法

示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?<a href="https://www.zzbaike.com/tag/php" title="查看所有文章关于 php" target="_blank">php</a>
goto a;
echo 'Foo';
a:
echo 'Bar';
?>
<?<a href="https://www.zzbaike.com/tag/php" title="查看所有文章关于 php" target="_blank">php</a> goto a; echo 'Foo'; a: echo 'Bar'; ?>
<?php
goto a;
echo 'Foo';

a:
echo 'Bar';
?>

以上示例会输出:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Bar
Bar
Bar

二、goto跳出循环

示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
for($i=0,$j=50; $i<100; $i++) {
while($j--) {
if($j==17) goto end;
}
}
echo "i = $i";
end:
echo 'j hit 17';
?>
<?php for($i=0,$j=50; $i<100; $i++) { while($j--) { if($j==17) goto end; } } echo "i = $i"; end: echo 'j hit 17'; ?>
<?php
for($i=0,$j=50; $i<100; $i++) {
while($j--) {
if($j==17) goto end; 
} 
}
echo "i = $i";
end:
echo 'j hit 17';
?>

以上示例会输出:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
j hit 17
j hit 17
j hit 17

三、无效写法

示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
goto loop;
for($i=0,$j=50; $i<100; $i++) {
while($j--) {
loop:
}
}
echo "$i = $i";
?>
<?php goto loop; for($i=0,$j=50; $i<100; $i++) { while($j--) { loop: } } echo "$i = $i"; ?>
<?php
goto loop;
for($i=0,$j=50; $i<100; $i++) {
while($j--) {
loop:
}
}
echo "$i = $i";
?>

以上示例会输出:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Fatal error: 'goto' into loop or switch statement is disallowed in
script on line 2
Fatal error: 'goto' into loop or switch statement is disallowed in script on line 2
Fatal error: 'goto' into loop or switch statement is disallowed in
script on line 2
  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。