美文网首页PHP学习笔记
PHP学习笔记-goto语句

PHP学习笔记-goto语句

作者: 赵客缦胡缨v吴钩霜雪明 | 来源:发表于2020-06-10 20:06 被阅读0次

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

    <?php
    if (true){
        echo "expr evaluates to true...",PHP_EOL;
    }else surprise:{
        echo "expr evaluates to false...",PHP_EOL;
    }
    
    

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

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

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

    这个其实是PHP的goto语句。

    goto语句

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

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

    <?php
    goto a;
    echo 'Foo';
    
    a:
    echo 'Bar';
    ?>
    

    以上代码会输出:Bar

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

    <?php
    echo 'Foo';
    
    a:echo 'Bar';
    ?>
    

    以上代码会输出:FooBar

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

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

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

    <?php
    if (true){
        echo "expr evaluates to true...",PHP_EOL;
    }else;
    surprise:{
        echo "expr evaluates to false...",PHP_EOL;
    }
    

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

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

    相关文章

      网友评论

        本文标题:PHP学习笔记-goto语句

        本文链接:https://www.haomeiwen.com/subject/gyxmtktx.html