重蔚php學習第二十六天——php流程控制,php模板語法

編程語言 PHP HTML 腳本語言 重蔚自留地 2017-05-05

1.流程控制

PHP有三種流程控制結構:順序結構,分支結構,循環結構

默認的,代碼的執行結構都是順序結構。代碼一行一行從上往下執行。順序結構是程序代碼的最基本結構。

分支結構:一段代碼根據不同的條件執行不同的部分

PHP中有兩種基本分支結構:if分支結構,switch分支結構

If分支結構語法

  1. If(條件表達式){

//當條件表達式返回結果為true的時候,執行裡面的語句塊

//語句塊

}

//如果條件表達式返回結果為false則不執行語句塊

以上被稱之為最簡分支結構

重蔚php學習第二十六天——php流程控制,php模板語法

  1. 標準if結構

If(條件表達式){

//if語句塊

}else{

//else語句塊

}

重蔚php學習第二十六天——php流程控制,php模板語法

  1. 複雜if結構

If(條件表達式1){

//if語句

}else if(條件表達式2){

//else if語句

}…{

}else{

//else語句塊

}

重蔚php學習第二十六天——php流程控制,php模板語法

If分支結構原理

重蔚php學習第二十六天——php流程控制,php模板語法

在PHP中允許else if和elseif兩種語法。兩種語法得到的結果完全一致。但是實現原理不同。

Else if:一次只有兩個結果,向下的其他比較都是在false之後再次產生,類似二叉樹

Elseif:產生一個平行結構,一個多節點的樹狀結構。

Switch分支結構

語法

Switch($falg){

Case 1:

//語句

Break;

Case 2:

//語句

Break;

Default:

//語句

Break;

}

結構和運行原理

重蔚php學習第二十六天——php流程控制,php模板語法

什麼時候使用if結構,什麼時候使用switch結構?

大部分的情況下都可以使用。通常會這樣來區分使用:

  1. 如果條件是需要判斷大小或者範圍的,使用if分支結構

  2. 如果條件是規定具體值的,那麼使用switch

  3. 不推薦在switch中使用條件判斷(比較表達式)

注意:凡是能使用switch的都可以使用if來解決,但是不見得所有if能實現的switch都可以做到。如果switch中case對應的條件是個比較表達式的話,有可能出問題。

循環結構

某一段代碼需要重複執行

電腦要知道什麼時候結束執行,否則會一直執行下去,死循環。

注意:寫任何循環結構的時候都要保證循環不會出現死循環。

PHP提供了多種循環

For,while,do-while,foreach

For循環:知道具體循環次數

For(初始條件;條件範圍;條件變更){

//循環體

}

重蔚php學習第二十六天——php流程控制,php模板語法

While循環:只要滿足條件,就可以無限循環

語法:

While(條件表達式){

//循環體

//循環變量的變化

}

重蔚php學習第二十六天——php流程控制,php模板語法

Do-while循環:先執行循環體再判斷循環條件

語法:

Do{

//循環體

//循環條件變更

}while(條件表達式);

重蔚php學習第二十六天——php流程控制,php模板語法

While和do-while的區別:do-while一定會執行一次循環體,而while不一定

重蔚php學習第二十六天——php流程控制,php模板語法

Foreach:PHP中專門用來遍歷數組(關聯數組),後面講數組的時候再講。

For模擬while

重蔚php學習第二十六天——php流程控制,php模板語法

2.模板語法

標籤語法,因為PHP是需要嵌入到html代碼中

<?php for($i=0;$i<10;$i++){ ?>

<tr><td><?php echo $i;?></td></tr>

<?php }?>

為了解決在html語言中出現這種大括號分開寫,不美觀的情況,可以使用標籤語法替代

標籤語法:在大括號開始“{”的時候使用冒號“:”替代,在大括號結束的地方使用end+標籤+分號“;”

If(){

}

標籤語法

If() :

Endif;

For循環

For():

Endfor;

While循環

While():

Endwhile;

Foreach循環

Foreach():

Endforeach;

使用見代碼demo06.php

3.函數

什麼是函數?某一段常用的代碼塊的集合,在使用的時候只需要去調用這個代碼塊的“入口”,函數名即可。

為什麼使用函數?

  1. 代碼的重複利用

  2. 模塊化編程

函數分為兩種:系統函數和自定義函數

系統函數:系統為開發人員定義的函數,只需要開發人員調用即可。

自定義函數:開發人員自己定義函數,調用前需要先定義函數。

自定義函數

語法:

function 函數名(參數列表){

函數體;

Return返回值

}

自定義函數的幾個要素:函數名,函數體,返回值

重蔚php學習第二十六天——php流程控制,php模板語法

如何調用函數?

跟調用系統函數一樣

語法:函數名(參數列表);

重蔚php學習第二十六天——php流程控制,php模板語法

函數到底是如何被執行的?

重蔚php學習第二十六天——php流程控制,php模板語法

函數的調用與函數的定義順序沒有關係,可以在定義函數之前調用函數,前提是彼此都在同一個腳本。

原因何在?

重蔚php學習第二十六天——php流程控制,php模板語法

函數的參數:形式參數和實際參數

形式參數:定義函數的時候所使用的參數就稱之為形式參數,形式參數沒有實際值

實際參數:在調用函數的時候傳遞給形式參數的參數叫做實際參數

重蔚php學習第二十六天——php流程控制,php模板語法

代碼

重蔚php學習第二十六天——php流程控制,php模板語法

函數參數的傳遞

值傳遞:拷貝複製,重新開闢內存空間

引用傳遞:直接傳遞地址,指向同一個內存空間

函數默認使用的都是值傳遞,把實際傳入的參數的值複製並賦值給形式參數。

但是也可以改變函數的參數方式變成引用傳遞。

語法

在定義函數的時候,將形式參數添加一個&符號

Function test(&$name){

//在這裡對$name進行操作,也就是對外部傳入的變量進行操作

}

調用:與普通調用一樣

引用傳值原理

重蔚php學習第二十六天——php流程控制,php模板語法

代碼

重蔚php學習第二十六天——php流程控制,php模板語法

作用域

重蔚php學習第二十六天——php流程控制,php模板語法

什麼是作用域?一個變量能夠被識別的範圍。

PHP中有兩個作用域:全局作用域,局部作用域

重蔚php學習第二十六天——php流程控制,php模板語法

Js中也有兩個作用域:全局作用域,局部作用域

重蔚php學習第二十六天——php流程控制,php模板語法

如何在函數內部使用全局變量呢?

PHP提供了一種機制去在函數內部調用全局變量

$GLOBALS[‘全局變量名’]

原理:

$GLOBALS會在用戶定義全局變量的時候,將變量名和值保存到$GLOBALS數組中,其中變量名對應鍵名(數組下標),值對應數組的值。

又因為$GLOBALS是超全局變量,所以可以在任何地方使用。

$GLOBALS保存的全局變量的引用,$GLOBALS[‘變量名’] === 變量名

重蔚php學習第二十六天——php流程控制,php模板語法

Global 全局變量名

在函數內部建立一個全局變量

global原理

重蔚php學習第二十六天——php流程控制,php模板語法

相關推薦

推薦中...