搜尋
首頁後端開發php教程PHP基礎教學四之流程控制

本節講解的內容

  • 順序流程控制

  • 單分支

  • ##雙分支
  • 多重分支
  • #switch
  • for
  • while
  • do…while
  • break
  • ## continue
  • goto

#前言

PHP的流程控制和別的語言很相似,都是分為好多情況,我們讀懂了程式碼的流程,就大致讀懂了程式碼的思想,初步理解了程式碼的作用以及會出現什麼結果。 php的流程大致分為兩種,順序流程,分支流程,循環流程。

順序流程控制

順序流程說白了就是解析器會照著php的程式碼,一行一行的進行解析;

如果我們的php程式碼中,沒有任何的流程控制語句,那麼我們的php程式碼就會順序執行. .

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

像上面的程式碼,解析器就會一行行的進行解析,執行。

分支流程控制

分支流程就是在我們的程式碼出現某種情況時,才會執行的程式碼。例如符合某種情況,php中常見的分支有:
  • 單分支
  • 雙分支
  • #多重分支

單分支


#當我們的程式碼符合某種情況時,執行特定的程式碼

單分支的語言格式是:

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

範例:

<?php

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

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

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

流程圖PHP基礎教學四之流程控制

在單一分支的if語句中後面是用大括號括起來的。當分支裡面的程式碼執行完畢,解析器會接著解析後面的程式碼

雙分支

大家有沒有想過當上面的變數$a不符合條件的時候,難道什麼都不做,大多數不是這樣的,當if括號的表達式不滿足時,我們一般還有處理方案,這就是雙分支結構,語言格式

    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基礎教學四之流程控制

在上面的程式碼中,當$a不滿足大於12時,就會執行else裡面的程式碼,然後才會執行外面的代碼。 if…else是成對出現的。但是也可以沒有else。

當程式碼中出現多個if…else的時候,他們之間是沒有邏輯關係的,執行完一組if之後,就會去執行另外一組if。

多重分支

有時候當我們的雙分支執行完之後,還有分支需要判斷,一直判斷下去,這時候就用到多分支。在多重分支中不一定要有else,else if 這裡可以有多個.

基本的語法是:

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基礎教學四之流程控制

在上面的流程圖中可以看到,當$a不大於10的時候才會向下執行,這很重要,然後判斷

是否大於2,如果後面還有則接著執行下去,直到滿足條件。

switch

在上面的if…else中if裡面的條件表達式一般是表示範圍(也可以表示具體的值如$a == 2) ,但是當我們使用多個具體值得時候,上面的程式碼看上去就會很冗餘,這是就要使用到switch,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基礎教學四之流程控制

  • ############################## switch語句的想法和if很像,在switch括號裡面的值就是我們需要判斷的值,我們要判斷的值與case後面的值是否一樣,一樣的話執行case下面的語句,當不一樣的時候,執行下一個case語句。 ###注意 case語句後面是一個冒號:###;當所有的case執行完之後,都沒有符合條件的值,就執行default裡面的語句。 ######在上面我們可以看到在每個case語句的下面都有一個break,這是一個關鍵字,當解析器遇見break的時候,就會自動的跳出switch,這樣後面的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基礎教學四之流程控制

在上面的流程图中我们可以看到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基礎教學四之流程控制

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基礎教學四之流程控制

上面的代码,初始值$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基礎教學四之流程控制

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

流程控制中用到的关键字

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基礎教學四之流程控制

流程图:
PHP基礎教學四之流程控制

从结果中可以看到,当$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基礎教學四之流程控制

流程图:
PHP基礎教學四之流程控制

在流程图中可以看到当满足$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
簡單地說明PHP會話的概念。簡單地說明PHP會話的概念。Apr 26, 2025 am 12:09 AM

phpsessionstrackuserdataacrossmultiplepagerequestsusingauniqueIdStoredInAcookie.here'showtomanageThemeffectionaly:1)startAsessionWithSessionWwithSession_start()和stordoredAtain $ _session.2)

您如何循環中存儲在PHP會話中的所有值?您如何循環中存儲在PHP會話中的所有值?Apr 26, 2025 am 12:06 AM

在PHP中,遍歷會話數據可以通過以下步驟實現:1.使用session_start()啟動會話。 2.通過foreach循環遍歷$_SESSION數組中的所有鍵值對。 3.處理複雜數據結構時,使用is_array()或is_object()函數,並用print_r()輸出詳細信息。 4.優化遍歷時,可採用分頁處理,避免一次性處理大量數據。這將幫助你在實際項目中更有效地管理和使用PHP會話數據。

說明如何使用會話進行用戶身份驗證。說明如何使用會話進行用戶身份驗證。Apr 26, 2025 am 12:04 AM

會話通過服務器端的狀態管理機制實現用戶認證。 1)會話創建並生成唯一ID,2)ID通過cookies傳遞,3)服務器存儲並通過ID訪問會話數據,4)實現用戶認證和狀態管理,提升應用安全性和用戶體驗。

舉一個如何在PHP會話中存儲用戶名的示例。舉一個如何在PHP會話中存儲用戶名的示例。Apr 26, 2025 am 12:03 AM

Tostoreauser'snameinaPHPsession,startthesessionwithsession_start(),thenassignthenameto$_SESSION['username'].1)Usesession_start()toinitializethesession.2)Assigntheuser'snameto$_SESSION['username'].Thisallowsyoutoaccessthenameacrossmultiplepages,enhanc

哪些常見問題會導致PHP會話失敗?哪些常見問題會導致PHP會話失敗?Apr 25, 2025 am 12:16 AM

PHPSession失效的原因包括配置錯誤、Cookie問題和Session過期。 1.配置錯誤:檢查並設置正確的session.save_path。 2.Cookie問題:確保Cookie設置正確。 3.Session過期:調整session.gc_maxlifetime值以延長會話時間。

您如何在PHP中調試與會話相關的問題?您如何在PHP中調試與會話相關的問題?Apr 25, 2025 am 12:12 AM

在PHP中調試會話問題的方法包括:1.檢查會話是否正確啟動;2.驗證會話ID的傳遞;3.檢查會話數據的存儲和讀取;4.查看服務器配置。通過輸出會話ID和數據、查看會話文件內容等方法,可以有效診斷和解決會話相關的問題。

如果session_start()被多次調用會發生什麼?如果session_start()被多次調用會發生什麼?Apr 25, 2025 am 12:06 AM

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

您如何在PHP中配置會話壽命?您如何在PHP中配置會話壽命?Apr 25, 2025 am 12:05 AM

在PHP中配置會話生命週期可以通過設置session.gc_maxlifetime和session.cookie_lifetime來實現。 1)session.gc_maxlifetime控制服務器端會話數據的存活時間,2)session.cookie_lifetime控制客戶端cookie的生命週期,設置為0時cookie在瀏覽器關閉時過期。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。