陳春暉
摘要:
本文通過(guò)總結(jié)幾個(gè)小例子,初步分析了PHP語(yǔ)言中的函數(shù)參數(shù)的傳遞,函數(shù)返回值的確定,等,給出了一些簡(jiǎn)單的結(jié)論。
關(guān)鍵詞:
函數(shù);傳遞;返回值
中圖分類(lèi)號(hào):
TP312.1
文獻(xiàn)標(biāo)識(shí)碼:
A
文章編號(hào):
1672-9129(2020)15-0198-01
函數(shù)傳遞參數(shù)通常有三種方式,第一種方式,按值傳遞,這里定義了一個(gè)函數(shù),test,函數(shù)有兩個(gè)參數(shù),parm1、parm2。接下來(lái)調(diào)用這個(gè)函數(shù)同樣有兩個(gè)參數(shù)$foo和$boo,在調(diào)用函數(shù)的時(shí)候,PhP會(huì)默認(rèn)將$foo的值賦值$parm1,$boo值賦值給$parm2,這個(gè)過(guò)程就像神奇的印度飛餅,不管你傳遞多少個(gè)參數(shù),函數(shù)會(huì)按照參數(shù)的先后順序一一接收。
例如調(diào)用者的第一個(gè)參數(shù)$foo的值賦給函數(shù)的第一個(gè)參數(shù),$boo的值賦給第二個(gè)參數(shù)parm2,如果有第3個(gè)第4個(gè)也是一一這樣的對(duì)應(yīng)的關(guān)系。
按值傳遞的方式就是將函數(shù)調(diào)用者中的參數(shù),以從左到右的順序依次復(fù)制給函數(shù)的參數(shù),然后執(zhí)行函數(shù)體內(nèi)的代碼,這就是按值傳遞的方式,也是最常見(jiàn)的方式。
接下來(lái)看一下第二種傳遞的方式:按引用傳遞。之前我們?cè)趯W(xué)習(xí)變量的時(shí)候,學(xué)習(xí)過(guò)按引用賦值,按引用傳遞的參數(shù)與按引用賦值是一樣的。我們?cè)賮?lái)回顧一下,在這個(gè)例子中定義了一個(gè)$name變量,將其賦值為函數(shù)測(cè)試,然后將$name這個(gè)變量按引用的方式賦值給$membername使用了地址符號(hào)。
在內(nèi)存中的情況是只有一個(gè)函數(shù)測(cè)試這個(gè)值,$name和$membername,他們同時(shí)指向函數(shù)測(cè)試,這個(gè)值的地址。當(dāng)函數(shù)測(cè)試值發(fā)生變化的時(shí)候,$name的值和$membername的值同時(shí)發(fā)生變化,這就是按引用傳遞。在函數(shù)中按引用傳遞,就是將參數(shù)的內(nèi)存地址傳遞到函數(shù)中,即在參數(shù)前面加一個(gè)地址符號(hào)。我們來(lái)舉例說(shuō)明一下,按值傳遞和按引用傳遞的區(qū)別。
在鄉(xiāng)村愛(ài)情故事中,趙四獲得了村委會(huì)的任職,村委會(huì)給他安排了一間自己的辦公室,于是他弄了一份圖紙,設(shè)計(jì)了一個(gè)這樣的辦公室。此時(shí)劉能看到了趙四的辦公室,真好看,于是他想方設(shè)法弄到了肇事的處置。按照這張圖紙,他建造了一間一模一樣的辦公室,這種根據(jù)圖紙能夠創(chuàng)建一模一樣的辦公室的方式,就相當(dāng)于按值傳遞方式。不久以后,由于村委會(huì)經(jīng)濟(jì)拮據(jù),所以決定將劉能和趙四安排在同一個(gè)辦公室,即他們兩個(gè)共用這一個(gè)辦公室。這時(shí)候趙四和劉能他們兩個(gè)之間又開(kāi)始相互影響了,這種方式就是按引用傳遞的方式,即使在函數(shù)的內(nèi)部,所有的操作都會(huì)影響到調(diào)用者參數(shù)的值。
在填寫(xiě)網(wǎng)站的一些個(gè)人信息的時(shí)候,我們通常會(huì)在性別來(lái)有男女和保密三個(gè)選項(xiàng),如果你不選擇男或女,通常我們將其默認(rèn)為保密,下面就實(shí)現(xiàn)這個(gè)功能。假如說(shuō)我輸入張三,然后我們來(lái)運(yùn)行一下,在瀏覽器中輸入網(wǎng)址,0212,看到提示信息中給我們報(bào)了錯(cuò)誤,這里有個(gè)警告,說(shuō)音符的函數(shù)缺少第二個(gè)參數(shù)。
我們來(lái)看一下,這里有兩個(gè)參數(shù)$name和$gender,而我們?cè)谡{(diào)用的時(shí)候只賦了一個(gè)初值張三,所以他給我們報(bào)了一個(gè)提示信息,缺少第二個(gè)參數(shù),要加一個(gè)男。
Functioninfo($name,$gender)
{
Echo“$name”;
}
Info(“張三”);
再來(lái)輸入一下。張三。這是正常了。現(xiàn)在要實(shí)現(xiàn)一個(gè)功能,不輸入男或女,而顯示保密,這應(yīng)該怎么做呢?當(dāng)然你也可以使用ifelse語(yǔ)句來(lái)判斷,不是男不是女,然后選擇保密。這里我們使用更簡(jiǎn)單的方式,對(duì)于這個(gè)參數(shù),我們?yōu)槠滟x一個(gè)初值,這樣在我們不使用第二個(gè)參數(shù)的時(shí)候,就會(huì)為其賦值為保密。
再來(lái)看一下,張三,第一個(gè)參數(shù)張三,第二個(gè)參數(shù)難輸出的時(shí)候,張三男第一個(gè)參數(shù)里是第二個(gè)參數(shù)沒(méi)有,默認(rèn)的情況下就是保密這種為參數(shù)賦一個(gè)初始值的方式,就是函數(shù)的默認(rèn)參數(shù)形式。
函數(shù)的返回值,我們已經(jīng)知道可以通過(guò)參數(shù)向函數(shù)傳遞信息,不過(guò)函數(shù)還可以向它的調(diào)用者發(fā)回信息,首先程序運(yùn)行到調(diào)用者的時(shí)候,根據(jù)調(diào)用者名稱找到函數(shù),這時(shí)控制權(quán)轉(zhuǎn)移到函數(shù),函數(shù)執(zhí)行函數(shù)體內(nèi)的代碼,執(zhí)行完畢以后,通過(guò)return語(yǔ)句將返回值返回給調(diào)用者,這樣控制權(quán)再次回到了調(diào)用者。
結(jié)語(yǔ):這里是對(duì)函數(shù)參數(shù)傳遞及返回值的一些簡(jiǎn)單探討,如有錯(cuò)漏,歡迎指正。
參考文獻(xiàn):
[1]PHP程序設(shè)計(jì)(慕課版).程文彬,李樹(shù)強(qiáng)2016
[2]PHP網(wǎng)站開(kāi)發(fā)實(shí)例教程(第2版)黑馬程序員2020
[3]PHP動(dòng)態(tài)網(wǎng)站程序設(shè)計(jì)(第2版).唐四薪.2020
[4]web動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)技術(shù).郭玲.2019
[5]PHP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)項(xiàng)目教程.牟奇春.汪劍.2016