PHP基礎(三)函式

2022-08-31 13:51:08 字數 4087 閱讀 3812

php中函式名不區分大小寫。

函式:function

函式定義語法:

函式的幾個對應的關鍵點:function,關鍵字、函式名、引數(形參和實參)、函式體和返回值。

基本語法:

function 函式名(引數){

//函式體

//返回值 return 結果;

定義函式的目的:是為了實現**的重複利用。乙個功能乙個函式(簡單明瞭)

函式呼叫特點:只要系統在記憶體中能夠找到對應的函式,就可以執行(函式的呼叫可以在函式定義前)

函式返回值

返回值:return,指的是將函式實現的結果通過return關鍵字,返回給函式外部(函式呼叫處),在php中所有函式都有函式值(如果沒有明確return使用,那麼系統預設返回null)。

return作用

1、return在函式內部的價值:返回當前函式的結果(當前函式執行結束)

2、return還可以在檔案中直接使用(不在函式中),代表檔案將return結果轉交給包含當前檔案的位置。(通常在系統配置檔案中使用較多),在檔案中也代表終止檔案後面的**,return之後的內容不會執行。

php作用域

1、全域性變數:就是使用者普通定義的變數(函式外部定義)。

使用者定義的所有全域性變數都會放在$globals中,區域性作用域不能訪問全域性變數,$globals是乙個超全域性變數,可以任意地方訪問。

所屬全域性空間:在php中只允許在全域性空間使用,理論上函式內部不可訪問。

指令碼週期:知道指令碼執行結束(最後一行**執行完)

2、區域性變數:就是在函式內部定義的變數

所屬當前函式空間:在php中只允許在當前函式自己內部使用

函式週期:函式執行結束(函式是在棧區中開闢獨立記憶體空間執行)

3、超全域性變數:系統定義的變數(預定義變數:$_server_、$_post_等)

所屬超全域性空間:沒有訪問限制(函式內外都可以訪問)

超全域性變數會將全域性變數自動納入到$globals裡面,而$globals沒有作用域限制,所以能夠幫助區域性去訪問全域性變數,但是必須使用陣列方式。(不常用)

如果想在函式內部使用外部變數:除了$globals外,可以通過引數傳值。

global關鍵字

global 關鍵字:實現全域性訪問區域性,同時區域性也可以訪問全域性

global關鍵字是一種在函式裡面定義變數的一種方式。

1、如果使用global定義的變數名在外部存在(全域性變數),那麼系統在函式內部定義的變數直接指向外部全域性變數所指向的記憶體空間(同乙個變數)

2、如果使用global關鍵字定義的變數名在外部不存在(全域性變數),系統會自動在全域性空間(外部)定義乙個與區域性變數同名的全域性變數

基本語法:

global 變數名;//不能賦值

變數名 = 值;//修改

靜態變數

靜態變數static,是在函式內部定義的變數(屬於區域性變數),使用static關鍵字來修飾,用來實現跨函式共享資料(同乙個函式被多次呼叫)的變數:函式執行結束所有區域性變數都會清空,如果重新執行函式,所有區域性變數又會重新初始化。

基本語法:

function 函式名(){

static 變數名 = 值; // 通常會在定義的時候就直接賦值

靜態變數的原理:系統在進行編譯的時候就會對static這一行進行初始化:為靜態變數賦值,函式在呼叫的時候,會自動跳過static關鍵字這一行。

靜態變數的使用:

1、為了統計:當前函式被呼叫的次數

2、為了統籌函式多次呼叫得到的不同結果(遞迴思想)

可變函式

可變函式:當前有乙個變數所儲存的值,剛好是乙個函式的名字,那麼就可以使用變數+()來充當函式名使用。

基本語法:

$變數 = 『display』;

function display(){

//可變函式

$變數();

可變函式在系統使用的過程中還是比較多的,尤其是使用很多系統函式的時候,需要使用者在外部定義乙個自定義函式,但是是需要傳入到系統函式內部使用。

匿名函式

匿名函式:沒有名字的函式。 

基本語法:

變數名 = function(){

變數名();//呼叫

變數儲存匿名函式,本質得到的是乙個物件(closure);

閉包:closure,一詞來自於以下兩者的結合:要執行的**塊(由於自變數被包含在**塊中,這些自由變數以及它們引用的物件沒有被釋放)和為自由變數提供繫結的計算環境(作用域)。

簡單理解:函式內部有一些區域性變數(要執行的**塊)在函式執行之後沒有被釋放,是因為在函式內部還有對應的函式在引用(函式的內部函式:匿名函式)。

證明:函式的區域性變數在函式使用之後沒有被釋放?

1、使用內部匿名函式;

2、匿名函式使用區域性變數:use關鍵字;

3、匿名函式被返回給外部使用;

偽型別

偽型別:假型別,實際上在php中不存在的型別,但是通過偽型別可以幫助程式設計師更好的檢視操作手冊從而方便學習。

偽型別主要有兩種:在三大類八小類之外。

mixed:混合的,可以是多種php中的資料型別

number:數值的,可以是任意數值型別(整型和浮點型)

1)有關輸出的函式

echo:輸出內容(非函式)

print():類似於echo輸出提供的內容,本質是一種結構(不是函式),返回1,可以不需要使用括號。

print_r():類似於var_dump,但是比var_dump簡單,不會輸出資料的型別,只會輸出值(陣列列印使用比較多)

var_dump:可以輸出任何內容

printf():格式化輸出

2)有關時間的函式

date():按照指定格式對對應的時間戳(從2023年格林威治時間開始計算的秒數),如果沒有指定特定的時間戳,那麼就是預設解釋當前時間戳。

time():獲取當前時間對應的時間戳。

microtime():獲取微妙級別的時間。

strtotime():按照規定格式的字串轉換成時間戳。

3)有關數學的函式

max():指定引數中最大的值(多個數或者陣列)。

min():比較兩個數中較小的值。

rand():得到乙個隨機數,指定區間的隨機整數。

mt_rand():與rand一樣,只是底層結構不一樣,效率比rand高(建議使用)。

round():四捨五入。

ceil():向上取整。

floor():向下取整。

pow():求指定數字的指定次結果。

abs():取絕對值

sqrt():求平方根

4)有關函式的函式

function_exists():判斷指定的函式名字是否在記憶體中存在,幫助使用者不去使用乙個不存在的函式。

func_get_arg():在自定義函式中去獲取指定數值對應的引數。

func_get_args():在自定義函式中去獲取所有的引數,得到的是乙個陣列

func_num_args():獲取當前自定義函式的引數數量

php基礎函式

基礎不牢,地動山搖 字串函式 1 計算字串長度 strlen 2 翻轉字串 strrev 3 拆分字串 chunk split 4 將字串拆分成陣列 str split explode 前者是按照長度分割,後者按照預定義字元 5 替換字串中的內容 str replace preg replace 6...

php 基礎函式

話不多說,如下所示 php 生成隨機數 和 時間函式 echo rand echo echo rand 0,10 echo time 時間戳 2017 02 10 0uqgkyutwe8 46 12 date default timezone set asia shanghai echo date ...

020PHP基礎知識 函式(三)

任何數量的引數 func get args 接收乙個陣列,陣列裡面包含所有引數 func num args 取得共有幾個引數 func get arg 整數 取得第幾個引數,序號是從0開始的 function stu name 的名字是 value.echo 一共有 func num args 名學...