美文网首页PHP入门系列
PHP入门系列(四)——流程控制

PHP入门系列(四)——流程控制

作者: RabbitMask | 来源:发表于2019-05-16 11:18 被阅读0次

    目录

    • 判断
    • 循环
    • 判断&循环
    • 包含
    • 其它
    先说感受:PHP的逻辑语句与语法像极了蔡……不是、像极了C。

    判断

    if...else if...else
    $t=date("H");
    if ($t<"10")
    {
        echo "Have a good morning!";
    }
    else if ($t<"20")
    {
        echo "Have a good day!";
    }
    else
    {
        echo "Have a good night!";
    }
    

    注意:elseif 和 else if 完全同效果,elseif 是 PHP 为 else if 专门做到容错版。更准确更严格到写法为后者: else if

    switch

    switch 语句用于根据多个不同条件执行不同动作,switch 语句必须结合break防止代码跳入下一个 case 中继续执行,default 语句用于不存在匹配(即没有 case 为真)时执行。

    $t=date("H");
    switch ($t){
        case $t<"10":
            echo "Have a good morning!";
            break;
        case $t<"20":
            echo "Have a good day!";
            break;
        default:
            echo "Have a good night!";
    

    在这里我们强行改写下上面的例子,但值得一提的是,switch-case语句一般的用来做值匹配,范围判断交给if else吧。

    循环

    While
    $i=0;
    while ($i<3){
        echo $i++;
    }
    
    do while
    $i=0;
    do{
        echo $i++;
    }
    while ($i<3);
    

    区别在于do...while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。

    for
    for ($i=1; $i<=5; $i++)
    {
        echo $i;
    }
    
    foreach

    foreach语句在数据类型章节我们已经提过了,foreach 仅能够应用于数组和对象,它是PHP提供的遍历数组的简单方式。

    <?php
    $array = [    "a" => 1,    "a" => 2,    "b" => 3,    400 => 4,    5,    6,];
    foreach ($array as $v){
        echo $v;
    }
    unset($v);
    echo "<br>";
    foreach ($array as $k => $v) {
        echo $k,':',$v,"\n";
    }
    unset($k,$v);
    ?>
    
    #输出
    23456
    a:2 b:3 400:4 401:5 402:6
    

    判断&循环

    对于判断和循环的复杂逻辑,我们需要用到辅助关键字,这一点是类似于其他语言。

    continue

    continue 在循环结构用用来跳过本次循环中剩余的代码并在条件求值为真时开始执行下一次循环,即跳到当前循环末尾。continue 接受一个可选的数字参数来决定跳过几重循环到循环结尾。默认值是1。

    $a=1;
    while ($a<10){
        $a++;
        if ($a==5){
            echo "give me five<br>";
            continue 1;
        }
        else{
            echo "game over<br>";
        }
    
    #输出
    game over
    game over
    game over
    give me five
    game over
    game over
    game over
    game over
    game over
    
    break

    break 结束当前 for,foreach,while,do-while 或者 switch 结构的执行。同样break 可以接受一个可选的数字参数来决定跳出几重循环。
    对比一下continue,break是跳出循环,continue是跳出当次循环。

    $a=1;
    while ($a<10){
        $a++;
        if ($a==5){
            echo "give me five<br>";
            break 1;
        }
        else{
            echo "game over<br>";
        }
    
    #输出
    game over
    game over
    game over
    give me five
    

    包含

    文件包含即包含并运行指定文件,PHP提供了四种文件包含方式,我们对比讨论。

    include&require

    include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:

    require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
    include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。
    

    因此,如果即使包含文件已丢失,但您希望继续执行,并向用户输出结果,那么请使用 include。

    #hello.php
    $user=htmlspecialchars($_GET["name"]);
    
    include 'hello.php';
    echo 'hello '.$user;
    
    require_once&include_once

    include_once语句在脚本执行期间包含并运行指定文件。此行为和 include语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。如同此语句名字暗示的那样,只会包含一次。include_once可以用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。同理require_once和require。

    #hello.php
    $user=htmlspecialchars($_GET["name"]);
    echo "hello.php be included<br>";
    
    include_once 'hello.php';
    include_once 'hello.php';
    echo 'hello '.$user;
    
    #输出
    hello.php be included
    hello rabbit
    
    include 'hello.php';
    include 'hello.php';
    echo 'hello '.$user;
    
    #输出
    hello.php be included
    hello.php be included
    hello rabbit
    

    其它

    return

    如果在一个函数中调用 return 语句,将立即结束此函数的执行并将它的参数作为函数的值返回。return 也会终止eval()语句或者脚本文件的执行。
    注意:既然 return 是语言结构而不是函数,因此其参数没有必要用括号将其括起来。通常都不用括号,实际上也应该不用,这样可以降低 PHP 的负担。

    goto

    goto 操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break。
    这里我们改写上方的break实例:

    $a=1;
    while ($a<10){
        $a++;
        if ($a==5){
            echo "give me five<br>";
            goto end;
        }
        else{
            echo "game running<br>";
        }
    }
    end:
    echo 'game over<br>';
    
    #输出
    game running
    game running
    game running
    give me five
    game over
    

    相关文章

      网友评论

        本文标题:PHP入门系列(四)——流程控制

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