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

目录

  • 判断
  • 循环
  • 判断&循环
  • 包含
  • 其它
先说感受: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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,415评论 0 2
  • 1. return 语句的作用 (1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执...
    后海大鲨鱼_阅读 1,685评论 0 0
  • 所有控制流程语句都具有相同的基本特征:根据一组条件选择要执行的语句。这些语句分三大类,并通过其主要行为进行描述。选...
    CarlDonitz阅读 309评论 0 0
  • 引言 PHP的教程我还是按照所用即所得的方式来写吧,本身对PHP的认识也不系统,因此,摸着石头过河,披荆斩棘吧~ ...
    OzanShareing阅读 542评论 2 4
  • 距离最近的一次toefl考试还有19天。脑子里总想着接下去的这几天将会是一场恶战,心里总有一些小激动。如果能顺利地...
    深夜奇谈阅读 225评论 0 0