PHP学习笔记-goto语句

最近遇到了了这样一段有趣的代码:

这段代码会输出什么呢?是输出if的内容还是else的内容?

但是他却if和else一起输出了:

首先我们应该了解一下surprise:是什么鬼?

这个其实是PHP的goto语句。

goto语句

PHP的goto是5.3版本新增的特性,goto 操作符可以用来跳转到程序中的另一位置。

该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记:


以上代码会输出:Bar

那么当没有goto操作符跳转程序的时候程序会如何执行呢?


以上代码会输出:FooBar

我们发现没有goto时 Bar仍然可以正常输出,但是失去了goto语句的跳转效果。

其实a:就是一个goto的标记,而上文中的{}只是用于标记代码块的。

所以上文讲到的代码我们可以理解为:

suprise作为独立语句块,并不能跟前面的语句关联,else 直接中断,相当于else后面没有执行语句,else后面的2个括号,也只是goto标记的代码块,跟else毫无关联。

我们也可以将suprise替换为任意的标记名都是可以输出的。

你可能感兴趣的:(PHP学习笔记-goto语句)