本節講解的內容
順序流程控制
單分支
- ##雙分支
- 多重分支
- #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 '$a的值大于12<br>'; } echo '这里是单分支外边'; ......结果..... $a的值大于12 这里是单分支外边
流程圖

雙分支
大家有沒有想過當上面的變數$a不符合條件的時候,難道什麼都不做,大多數不是這樣的,當if括號的表達式不滿足時,我們一般還有處理方案,這就是雙分支結構,語言格式if(条件表达式){ //为真时执行的代码 }else{ //为假时执行的代码 }範例:
$a = 6; if($a > 12){ echo '$a的值大于12<br>'; }else{ echo '$a的值小于12' } echo '这里是单分支外边'; ......结果..... $a的值小于12 这里是单分支外边
流程圖:

當程式碼中出現多個if…else的時候,他們之間是沒有邏輯關係的,執行完一組if之後,就會去執行另外一組if。
多重分支
有時候當我們的雙分支執行完之後,還有分支需要判斷,一直判斷下去,這時候就用到多分支。在多重分支中不一定要有else,else if 這裡可以有多個.基本的語法是:if(条件表达式){ 语句 }else if(条件表达式){ 语句 }else if(条件表达式){ 语句 }...範例:
<?php $a = 3; if($a > 10){ echo '$a 大于10'; }else if($a > 2){ echo '$a 小于等于10并且大于2'; }else{ echo '$a小于等于2'; } .....结果...... $a小于等于10并且大于2
流程圖:

在上面的流程圖中可以看到,當$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 = 'b'; switch ($a) { case 'a': echo '$a的值是a'; break; case 'b': echo '$a的值是b'; break; case 'c': echo '$a的值是c'; break; default: echo '$a的值不符合上面的全部情况'; break; } .....结果....... $a的值是b
流程圖:

- ############################## 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 '这是for循环<br>'; } ....结果.... echo 这是for循环(十次);
流程图:
在上面的流程图中我们可以看到for循环的执行顺序,for循环只有在为假的时候跳出循环。
for循环的执行顺序:
先执行变量初始化$a = 0;在整个for循环中,这句话只执行一次。
判断$a的值是否小于10,如果小于10,执行for循环里面的语句,如果不小于则退出循环。
当执行完for循环里面的语句,执行增量表达式,$a++(看前面的递增、递减运算符),
当$a增加1之后再进行条件判断,$a是否小于10,如果小于10,执行for循环里面的语句,如果不小于则退出循环。
当$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 . '*' . $j . '=' . $i * $j . ' '; //进行显示 } echo '<br>'; //一层显示完后,记着换行。 }
结果:
99乘法表,按照for循环的流程一步步执行,但是for循环的判断条件需要找准,也就是for循环的循环次数。
while循环结构
当我们的循环次数不能确定的时候,这时候for循环就显得有些无力,这时候我们可以选择while循环。while循环当没有特定条件的时候,就是一个死循环,也就是解析器会一直执行,永远不会停止,所以我们在用while循环的时候,注意while循环跳出循环的条件。
while循环的语法结构:
while(循环条件){ 循环体语句; }
示例:
<?php $a = 12; while($a < 20){ echo '$a的值是' . $a . '<br>'; $a++; } ....结果.... echo $a的值是12....
流程图:
上面的代码,初始值$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 '$a的值是' . $a . '<br>'; $a++; }while($a < 20);
流程图:
从流程图中可以看到是先执行循环体,在进行判断。
当不满足条件后跳出循环。
流程控制中用到的关键字
break
break的作用是当满足某种情况时,不想再循环了,跳出当前循环,也就是结束掉当前的循环,不管你有没有满足最初条件,强制退出。
break 可以结束 for, while,do-while 或者 switch 结构的执行 ,同时break 可以接受一个可选的数字参数来决定跳出几重循环(用于多重循环)。
示例:
<?php for($i = 0; $i < 10; $i++){ if($i == 5){ break; } echo '$i的值是' . $i . '<br>'; }
结果:
流程图:
从结果中可以看到,当$i的值等于5的时候,就break,跳出循环,所以输出语句输出了5句。
continue
continue在循环结构中用来跳过本次循环,然后接着进行判断是否满足条件。注意:是跳出单次循环,而break是跳出整个循环结构。
continue 可接受一个可选的数字参数来决定跳过几重循环到循环结尾
示例:
<?php for($i = 0; $i < 10; $i++){ if($i == 5){ continue; } echo '$i的值是' . $i . '<br>'; }
结果:
流程图:
在流程图中可以看到当满足$i == 5的时候,continue跳出本次循环,这时下面的输出就不能输出,所以看到在结果中没有输出$i == 5这种情况。
goto
goto操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记。
示例:
<?php $a = 12; goto A; echo '这是第一个位置'; A: echo '这是第二个位置'; .....结果...... 这是第二个位置
可以看到其中一个输出语句没有输出,这是因为goto跳转到了A这个位置,注意A后面是一个冒号:
同时goto可以使用在循环中,这样也可以跳出循环。
使用注意事项:
使用注意事项: PHP中的goto有一定限制,只能在同一个文件和作用域
中跳转,也就是说你无法跳出一个函数或类方法,也无法跳入到另一个函数。常见的用法是用来跳出循环或者switch,可以代替多层的break
总结
流程控制,在开发中不可避免的,我们写的代码总是在流程控制中执行,明白了PHP的流程控制也就明白了代码的整体框架。同时for循环while循环等自己可以进行加深,不管什么编程语言,只有自己不停地敲代码才会明白其中的道理。所以要多敲代码,多练习。
以上就是PHP基础教程四之流程控制的内容,更多相关内容请关注PHP中文网(www.php.cn)!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載
最受歡迎的的開源編輯器

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

Dreamweaver CS6
視覺化網頁開發工具

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