ホームページ >バックエンド開発 >PHPチュートリアル >PHP 基本チュートリアル 4 - プロセス制御

PHP 基本チュートリアル 4 - プロセス制御

黄舟
黄舟オリジナル
2017-03-01 09:35:131414ブラウズ

この項で説明する内容

  • 逐次プロセス制御

  • 単一分岐

  • 二分岐

  • 複数分岐

  • スイッチ

  • のために

  • しながら

  • do…while

  • break

  • Continue

  • goto

はじめに

PHPのフロー制御は他の言語と非常に似ており、多くの言語に分かれています。部品。コードの流れを理解すると、コードの考え方が大まかに理解でき、コードの機能と結果が最初に理解できます。 PHPの処理は大きく分けて逐次処理、分岐処理、循環処理の2種類に分かれます。

シーケンシャルプロセス制御

シーケンシャルプロセスとは、単にパーサーが PHP コードに従い、行ごとに解析することを意味します。

PHP コードにフロー制御ステートメントがない場合、PHP コードが実行されます。 .

$a = 12;
$b = 13;
$c = 15;
$res = $a + $b * $c;
echo $res;

上記のコードと同様に、パーサーはそれを 1 行ずつ解析して実行します。

分岐プロセス制御

分岐プロセスは、コード内で特定の状況が発生した場合にのみ実行されるコードです。たとえば、特定の状況に該当する場合、php の一般的な分岐は次のとおりです。

  • 単一分岐

  • 二重分岐

  • 複数の分岐

単一分岐

コードが特定の状況 特定のコードを実行する場合
単一分岐の言語形式は次のとおりです:

    if(条件表达式){
        //代码块
    }

例:

<?php

$a = 13;
if($a > 12){//$a符合大于12的条件才会执行下面的这句话

    echo &#39;$a的值大于12<br>&#39;;
}

echo &#39;这里是单分支外边&#39;;
......结果.....
$a的值大于12
这里是单分支外边

フローチャート
PHP 基本チュートリアル 4 - プロセス制御

単一分岐の if ステートメントの後には中括弧が続きます。ブランチ内のコードが実行されると、パーサーは次のコードの解析を続けます

二重ブランチ

上記の変数 $a が条件を満たさない場合、ほとんどは何も行われないと考えたことはありますか?このように、括弧内の式が満たされない場合、通常は二重分岐構造、言語形式

    if(条件表达式){
        //为真时执行的代码
    }else{
        //为假时执行的代码
    }

例:

$a = 6;
if($a > 12){

    echo &#39;$a的值大于12<br>&#39;;
}else{
    echo &#39;$a的值小于12&#39;
}

echo &#39;这里是单分支外边&#39;;
......结果.....
$a的值小于12
这里是单分支外边

フローチャート:
PHP 基本チュートリアル 4 - プロセス制御

上記のコードでは、解決策が得られます。 , when $a が 12 以下の場合、else 内のコードが実行され、その後、外側のコードが実行されます。 if...else はペアで表示されます。しかし、それ以外にあり得ません。

コード内に複数の if...else ステートメントがある場合、それらの間に論理的な関係はありません。ある ifs セットが実行された後、別の ifs セットが実行されます。

マルチブランチ

デュアルブランチが実行された後、まだ判定が必要なブランチがあり、判定が継続される場合があります。このとき、マルチブランチが使用されます。複数の分岐に else を含める必要はありません。ここに複数の else を含めることができます。

基本的な構文は次のとおりです:

if(条件表达式){
    语句
}else if(条件表达式){
    语句
}else if(条件表达式){
    语句
}...

例:

<?php
$a = 3;
if($a > 10){
    echo &#39;$a 大于10&#39;;
}else if($a > 2){
    echo &#39;$a 小于等于10并且大于2&#39;;
}else{
    echo &#39;$a小于等于2&#39;;
}
.....结果......
$a小于等于10并且大于2

フローチャート:
PHP 基本チュートリアル 4 - プロセス制御

フローチャートで確認できます。上記の場合、$a が 10 より大きくない場合にのみ下向きに実行されます。これは非常に重要です。その後、 が 2 より大きいかどうかを判断します。後でそれ以上の値がある場合は、条件が満たされるまで実行され続けます。

switch

上記の if...else では、if の条件式は一般に範囲を表します ($a == 2 などの特定の値を表すこともできます) が、複数の特定の値を使用する場合、上記のコードは非常に冗長に見えるため、switch を使用する必要があります。これは、if...else の別の記述方法とも言えます。

switch ステートメントは、同じ式を含む一連の if ステートメントのようなものです。同じ変数 (または式) をさまざまな値と比較し、どの値と等しいかに応じて異なるコードを実行する必要がある状況は数多くあります。これがまさに switch ステートメントの目的です

switch の基本構文は次のとおりです:

switch(变量/表达式/值){
    case 变量/表达式/值:
        处理语句;
    break;
    case 变量/表达式/值:
        处理语句;
    break;
    case 变量/表达式/值:
        处理语句;
    break;
    default:
        上面的情况都不满足执行的语句;
    break;
}

例:

<?php

$a = &#39;b&#39;;

switch ($a) {
    case &#39;a&#39;:
        echo &#39;$a的值是a&#39;;
        break;
    case &#39;b&#39;:
        echo &#39;$a的值是b&#39;;
        break;
    case &#39;c&#39;:
        echo &#39;$a的值是c&#39;;
        break;
    default:
        echo &#39;$a的值不符合上面的全部情况&#39;;
        break;
}
.....结果.......

$a的值是b

フローチャート:


PHP 基本チュートリアル 4 - プロセス制御

switch ステートメントの考え方は if の値と非常に似ています。スイッチの括弧は、値が case の後ろの値と同じであるかどうかを判断する必要があるものです。同じであれば、case の下のステートメントを実行します。異なる場合は、次のステートメントを実行します。ケースステートメント。

case ステートメントの後にコロンがあることに注意してください: ; すべてのケースが実行され、条件を満たす値がない場合、デフォルトのステートメントが実行されます。

上記では、各 case ステートメントの下に Break があることがわかります。これはキーワードであり、パーサーが Break に遭遇すると、自動的にスイッチから抜け出し、後続の case は実行されません。 (同じものに遭遇した場合、下方向には実行されません)。

switch に関する注意点:

  • case ステートメントの値が switch 式の値と一致すると、PHP はステートメントの実行を開始します。

  • 当执行case语句后,遇见break就退出,但是如果没有break,则一直运行下去,直到遇见break或switch执行结束。

  • defaule里面的语句是它匹配了任何和其他case都不匹配的情况。

  • case后面的类型可以使整型,浮点型,字符串,布尔值,array,null,通常情况下,我们一般用整数 或字符串。

循环流程控制

在开发中我们有时会有这样的需求,我们需要打印一句话100次,这时候用单纯的顺序流程控制就会很麻烦,但是也能做,但如果是一万次呢…这时候就需要我们想另一种解决思路,我们能不能利用循环,循环的输出一句话,并且控制循环次数,这样我们就会很顺利的输出我们想要的结果。

for循环结构

for循环在我们的开发中是最常见和最常用到的循环,这种循环是在我们知道循环次数的时候,首选的结构,像上面的一万次,我们已经知道了需要循环一万次。学习for循环最主要的是看懂for循环的执行流程。按着for的执行流程,我们可以清晰的知道for循环是在哪里退出,在哪里需要在循环。

语法结构:

for(循环初始值,循环初始值...;循环条件;增量,增量){
        语句循环体;
}

示例:

for($i = 0; $i < 10; $i++){
    echo &#39;这是for循环<br>&#39;;
}
....结果....
echo 这是for循环(十次);

流程图:
PHP 基本チュートリアル 4 - プロセス制御

在上面的流程图中我们可以看到for循环的执行顺序,for循环只有在为假的时候跳出循环。

for循环的执行顺序:

  1. 先执行变量初始化$a = 0;在整个for循环中,这句话只执行一次。

  2. 判断$a的值是否小于10,如果小于10,执行for循环里面的语句,如果不小于则退出循环。

  3. 当执行完for循环里面的语句,执行增量表达式,$a++(看前面的递增、递减运算符),

  4. 当$a增加1之后再进行条件判断,$a是否小于10,如果小于10,执行for循环里面的语句,如果不小于则退出循环。

  5. 当$a不小于10的时候,直接跳出循环,执行for循环后面的语句。

明白for循环的执行顺序非常重要,可以看着案列,自己动手画一画。

for循环打印99乘法表

for循环是可以嵌套使用的,当进行嵌套的时候,外面的循环执行一次,里面的for循环执行完才执行外面。

<?php

for($i = 1; $i <= 9; $i++){ //控制乘法表的层数,第一层是1,第二层是2,一直到9;
    for($j = 1; $j <= $i; $j++){ //每一层的个数,第一层是1 * 1 = 1;每一层的最大的不能大于层数,像第一层,不能出现1 * 2 = 2;
        echo $i . &#39;*&#39; . $j . &#39;=&#39; . $i * $j . &#39;  &#39;; //进行显示
    }
    echo &#39;<br>&#39;; //一层显示完后,记着换行。
}

结果:
PHP 基本チュートリアル 4 - プロセス制御

99乘法表,按照for循环的流程一步步执行,但是for循环的判断条件需要找准,也就是for循环的循环次数。

while循环结构

当我们的循环次数不能确定的时候,这时候for循环就显得有些无力,这时候我们可以选择while循环。while循环当没有特定条件的时候,就是一个死循环,也就是解析器会一直执行,永远不会停止,所以我们在用while循环的时候,注意while循环跳出循环的条件。

while循环的语法结构:

while(循环条件){
    循环体语句;
}

示例:

<?php

$a = 12;
while($a < 20){
    echo &#39;$a的值是&#39; . $a . &#39;<br>&#39;;
    $a++;
}
....结果....
echo $a的值是12....

流程图:
PHP 基本チュートリアル 4 - プロセス制御

上面的代码,初始值$a是在while的外面,我们可能不知道需要循环多少次,但是我们知道当$a的值小于20就一直循环,但是我们不能让$a的值不变,如果$a的值不变,while循环就是一个死循环。所以在循环体里面有一个$a的增长语句。

do…while循环控制

do…while和while循环大致一样,但是有一点不同,do…while循环的循环体是在do里面写着,判断条件是在while里面写着,并且do…while不管是否满足while里面的条件,都会执行一次do里面的循环体。

do...while语法结构:

do{
    循环体语句;
}while(判断条件);

示例:

<?php

$a = 12;
do{
    echo &#39;$a的值是&#39; . $a . &#39;<br>&#39;;
    $a++;
}while($a < 20);

流程图:
PHP 基本チュートリアル 4 - プロセス制御

从流程图中可以看到是先执行循环体,在进行判断。
当不满足条件后跳出循环。

流程控制中用到的关键字

break

break的作用是当满足某种情况时,不想再循环了,跳出当前循环,也就是结束掉当前的循环,不管你有没有满足最初条件,强制退出。
break 可以结束 for, while,do-while 或者 switch 结构的执行 ,同时break 可以接受一个可选的数字参数来决定跳出几重循环(用于多重循环)。

示例:

<?php

for($i = 0; $i < 10; $i++){
    if($i == 5){
        break;
    }
    echo &#39;$i的值是&#39; . $i . &#39;<br>&#39;;
}

结果:
PHP 基本チュートリアル 4 - プロセス制御

流程图:
PHP 基本チュートリアル 4 - プロセス制御

从结果中可以看到,当$i的值等于5的时候,就break,跳出循环,所以输出语句输出了5句。

continue

continue在循环结构中用来跳过本次循环,然后接着进行判断是否满足条件。注意:是跳出单次循环,而break是跳出整个循环结构。
continue 可接受一个可选的数字参数来决定跳过几重循环到循环结尾

示例:

<?php

for($i = 0; $i < 10; $i++){
    if($i == 5){
        continue;
    }
    echo &#39;$i的值是&#39; . $i . &#39;<br>&#39;;
}

结果:
PHP 基本チュートリアル 4 - プロセス制御

流程图:
PHP 基本チュートリアル 4 - プロセス制御

在流程图中可以看到当满足$i == 5的时候,continue跳出本次循环,这时下面的输出就不能输出,所以看到在结果中没有输出$i == 5这种情况。

goto

goto操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记。

示例:

<?php

$a = 12;
goto A;
echo &#39;这是第一个位置&#39;;
A:
echo &#39;这是第二个位置&#39;;
.....结果......
这是第二个位置

可以看到其中一个输出语句没有输出,这是因为goto跳转到了A这个位置,注意A后面是一个冒号:
同时goto可以使用在循环中,这样也可以跳出循环。
使用注意事项:

  1. 使用注意事项: PHP中的goto有一定限制,只能在同一个文件和作用域
    中跳转,也就是说你无法跳出一个函数或类方法,也无法跳入到另一个函数。

  2. 常见的用法是用来跳出循环或者switch,可以代替多层的break

总结

流程控制,在开发中不可避免的,我们写的代码总是在流程控制中执行,明白了PHP的流程控制也就明白了代码的整体框架。同时for循环while循环等自己可以进行加深,不管什么编程语言,只有自己不停地敲代码才会明白其中的道理。所以要多敲代码,多练习。

 以上就是PHP基础教程四之流程控制的内容,更多相关内容请关注PHP中文网(www.php.cn)!


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。