日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

php函数

發(fā)布時(shí)間:2024/1/3 综合教程 24 生活家
生活随笔 收集整理的這篇文章主要介紹了 php函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 函數(shù)的定義

所謂函數(shù),就是將一些有具體功能的語句組織在了一起。定義函數(shù)的目的是為了將程序分塊。方便使用,管理和閱讀,調(diào)試

函數(shù)的分類:系統(tǒng)定義好了的函數(shù),用戶自定義的函數(shù)

2. 自定義函數(shù)

① 函數(shù)的聲明

和JavaScript里面的語法是一樣的:

function 函數(shù)名(參數(shù)1,參數(shù)2,參數(shù)3…)

{

//函數(shù)體

}

② 函數(shù)的調(diào)用

調(diào)用函數(shù)也非常簡單,直接函數(shù)名(不傳/傳遞相應(yīng)的參數(shù))

③ 函數(shù)的參數(shù)

函數(shù)的參數(shù)分為兩種:實(shí)際參數(shù)(實(shí)參),形式參數(shù)(形參)

分形參和實(shí)參,在沒有傳&這個(gè)的時(shí)候形參是實(shí)參的拷貝,

如果是&實(shí)參可以改變。

沒有實(shí)際參數(shù)的變量,如寫在函數(shù)名括號(hào)的變量稱形參

④ 函數(shù)的返回值

可以通過一個(gè)return關(guān)鍵字來進(jìn)行返回,如果沒有設(shè)置return,系統(tǒng)默認(rèn)返回null

一個(gè)函數(shù)是否可以有多個(gè)返回值?

函數(shù)的返回值,關(guān)鍵字return,但不能有多個(gè)return同時(shí)返回多個(gè)值;

當(dāng)有多個(gè)return返回值時(shí),只會(huì)執(zhí)行第一個(gè)然后停止運(yùn)行;

寫在return下面的所有代碼都不會(huì)執(zhí)行,但是有些時(shí)候,有些程序員會(huì)故意將某些代碼寫在return下面,這些代碼叫做花旦。

如果我偏偏就要讓一個(gè)函數(shù)返回多個(gè)值,可以通過數(shù)組的方式。

⑤函數(shù)的工作原理

當(dāng)我們調(diào)用一個(gè)函數(shù)的時(shí)候,事實(shí)上就是在內(nèi)存里面開辟了一個(gè)新的棧區(qū),當(dāng)函數(shù)執(zhí)行完之后,新開辟的棧就會(huì)被回收(釋放內(nèi)存)。

當(dāng)我們調(diào)用函數(shù)1的時(shí)候,內(nèi)存里面就開辟了一個(gè)新的棧,形參就是在這個(gè)新棧里面被申明和使用的,當(dāng)函數(shù)1執(zhí)行完之后,這個(gè)棧就會(huì)被釋放掉,所以它對(duì)實(shí)參不會(huì)有任何影響。如果函數(shù)1里面又調(diào)用函數(shù)2,則又會(huì)在內(nèi)存里面開辟一個(gè)新棧。

棧區(qū)的特點(diǎn):先進(jìn)后出,后進(jìn)先出

效率低

3.變量的作用域

和JavaScript一樣,PHP不支持塊級(jí)作用域

在C語言里面,支持塊級(jí)作用域

一對(duì)花括號(hào)代表一個(gè)塊級(jí)作用域

①局部變量

如果沒有函數(shù),那么我們創(chuàng)建的變量可以在頁面任何位置使用,但是一旦有了函數(shù),就會(huì)有不同的作用域

如下:

除了外部無法訪問到函數(shù)內(nèi)部的變量以外,函數(shù)內(nèi)部也無法訪問全局變量,證明如下:

效果:

如果想在函數(shù)中訪問一個(gè)全局變量,也不是沒有辦法,可以使用global關(guān)鍵字

如下:

除了上面的方法,還有一個(gè)方法,使用PHP內(nèi)置的(預(yù)定義變量)超全局?jǐn)?shù)組$GLOBALS[ ],全局變量的變量名就是鍵名,變量值就是數(shù)組的值

全局變量:

Define,<?PHP 聲明變量?>

②靜態(tài)變量

因?yàn)槿绻窃诤瘮?shù)里面創(chuàng)建的變量,一旦函數(shù)結(jié)束,變量就會(huì)被銷毀,證明如下:

靜態(tài)變量的特點(diǎn)就是由于靜態(tài)變量是放在靜態(tài)區(qū)里面的,所以函數(shù)結(jié)束后變量不會(huì)被銷毀。申明靜態(tài)變量使用關(guān)鍵字static

如下:

4. 各種形式的PHP函數(shù)

① 常規(guī)參數(shù)函數(shù)

所謂常規(guī)參數(shù)函數(shù),就是實(shí)參和形參個(gè)數(shù)相等,類型一致

② 引用參數(shù)函數(shù)

所謂引用參數(shù),就是將參數(shù)的地址傳遞給函數(shù),這個(gè)時(shí)候,函數(shù)里面的形參和實(shí)參都是指向同一個(gè)地址,這個(gè)時(shí)候,相當(dāng)于兩個(gè)是被綁定在一起的,形參一改,實(shí)參也就被修改了

需要注意一個(gè)地方:在C語言里面,如果傳遞的是一個(gè)數(shù)組,那么傳遞的是地址過去,但是在PHP里面?zhèn)鬟f數(shù)組仍然是傳遞值過去

如下:

如果想要傳遞數(shù)組的地址,仍然是形參前面加一個(gè)&就可以了,如下:

在PHP里面,有很多這樣的引用傳參的函數(shù),例如:sort()函數(shù),進(jìn)行排序的函數(shù),返回新數(shù)組,原來數(shù)組的順序會(huì)改變

③ 默認(rèn)參數(shù)函數(shù)

所謂默認(rèn)函數(shù)參數(shù),就是可以給函數(shù)指定一個(gè)默認(rèn)參數(shù)值,當(dāng)我們調(diào)用函數(shù)的時(shí)候,如果傳過來了實(shí)參,就用實(shí)參,如果沒有,就用默認(rèn)的參數(shù)值

案例2:

④ 參數(shù)個(gè)數(shù)可變函數(shù)

所謂參數(shù)個(gè)數(shù)可變函數(shù),就是根據(jù)函數(shù)傳過來的參數(shù)個(gè)數(shù)來執(zhí)行業(yè)務(wù)。有一點(diǎn)像JS里面的函數(shù)重載。

func_num_args():該函數(shù)的返回值是一個(gè)整數(shù),數(shù)組里面裝的是傳遞過來的實(shí)參的個(gè)數(shù)

func_get_args()函數(shù):返回值也是一個(gè)數(shù)組,數(shù)組里面裝的就是傳遞過來的參數(shù)的值

⑤ 回調(diào)函數(shù)

所謂回調(diào)函數(shù),就是將一個(gè)函數(shù)A作為參數(shù)傳遞給另外一個(gè)函數(shù)B,然后在函數(shù)B里面再執(zhí)行函數(shù)A。

在學(xué)習(xí)回調(diào)函數(shù)之前,我們需要先學(xué)習(xí)變量函數(shù)

所謂變量函數(shù),就是將函數(shù)賦值給一個(gè)變量,然后變量名后面加上一對(duì)括號(hào),PHP系統(tǒng)會(huì)自動(dòng)檢測是否為函數(shù)。如果是的話就會(huì)執(zhí)行該函數(shù)

接下來再來看回調(diào)函數(shù),將函數(shù)作為參數(shù)傳遞到另外一個(gè)函數(shù)里面

在PHP里面,實(shí)現(xiàn)回調(diào)函數(shù)還有一種方法,通過系統(tǒng)函數(shù)call_user_func_array()

call_user_func_array(“函數(shù)名”,裝有參數(shù)的數(shù)組)

如下:

⑥ 匿名函數(shù)(閉包函數(shù))

所謂匿名函數(shù),就是沒有名字的函數(shù)

需要將匿名函數(shù)賦值給一個(gè)變量,這個(gè)時(shí)候直接在變量名后面加上一對(duì)括號(hào),就可以調(diào)用這個(gè)匿名函數(shù)了

PHP里面的匿名函數(shù)又被稱之為閉包函數(shù)

⑦ 遞歸函數(shù)

所謂遞歸函數(shù),就是直接或者間接的調(diào)用自己。

遞歸函數(shù)最大的好處在于精簡程序中繁雜重復(fù)調(diào)用的函數(shù)。但是使用遞歸會(huì)大量消耗內(nèi)存,所以一般不建議使用遞歸。

練習(xí):使用遞歸實(shí)現(xiàn)從1+100求和

5. 自定義函數(shù)庫

有些時(shí)候,我們不僅僅只是使用系統(tǒng)提供給我們的函數(shù),我們還會(huì)自己寫一套函數(shù)。

如果要將自己寫的php函數(shù)庫包含進(jìn)來,我們可以使用include關(guān)鍵字

Hanshuku.php代碼

Test.php代碼

除了include關(guān)鍵字以外,還有一個(gè)叫做require的關(guān)鍵字,也可以將自己定義的函數(shù)庫包含進(jìn)來

如下:

Require和include的區(qū)別:

Require當(dāng)遇到錯(cuò)誤的時(shí)候,會(huì)直接停止腳本,include遇到錯(cuò)誤,會(huì)給出警告,但是不會(huì)停止腳本

如下:require會(huì)終止腳本,后面的代碼不會(huì)被執(zhí)行

效果:

Include則會(huì)只是給出警告,但是后面的代碼會(huì)繼續(xù)執(zhí)行

效果:

Include_once和require_once:基本功能和上面的require與include功能是一樣的,但是如果該文件里面的代碼已經(jīng)被包含了,則不會(huì)再次包含,once會(huì)判斷次數(shù)只能包含一次

如下:

總結(jié)

以上是生活随笔為你收集整理的php函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。