PHP函數(shù)原理理解詳談
函數(shù)初解
function,是一種語法結(jié)構(gòu),將實現(xiàn)某一個功能的代碼塊(多行代碼)封裝到一個結(jié)構(gòu)中實現(xiàn)代碼的重復(fù)利用
函數(shù)定義語法:
關(guān)鍵點:function關(guān)鍵字,函數(shù)名,參數(shù)(形參和實參),函數(shù)體和返回值
基本語法:
function 函數(shù)名(參數(shù)){
//函數(shù)體
//返回值:return結(jié)果
}
定義函數(shù)的目的:實現(xiàn)代碼的重復(fù)利用(簡單明了)
函數(shù)的使用:通過訪問函數(shù)的名字+();//如果函數(shù)在定義的過程中有參數(shù),那么在調(diào)用的時候必須傳入對應(yīng)的參數(shù)
實例:
<?php
function display(){//定義
echo'hello world';
}
display();//調(diào)用
?>函數(shù)是在代碼執(zhí)行階段碰到函數(shù)名字的時候才會調(diào)用,不是在編譯階段
函數(shù)的調(diào)用特點:只要系統(tǒng)在內(nèi)存中能夠找到就可以執(zhí)行,也就是函數(shù)的調(diào)用可以在函數(shù)的定義之前
<?php
display();//調(diào)用
function display(){//定義
echo'hello world';
}
?>也就是這樣
注意:函數(shù)也不可同名
參數(shù)詳解
函數(shù)的參數(shù)分為兩種:形參和實參
形參是實參的載體:實參在調(diào)用時需要傳入函數(shù)內(nèi)部參與計算,那么需要在函數(shù)內(nèi)部去找到實際數(shù)據(jù)所在的位置才能找到數(shù)據(jù)本身;需要實際調(diào)用的時候,將數(shù)據(jù)以實參的形式傳遞給形參;給形參賦值,從而使得函數(shù)內(nèi)部可以用到外部數(shù)據(jù)
<?php
function add($arg1,$arg2){//芝士形參,使用逗號分隔開
echo $arg1+$arg2;
}
echo '<hr/>';
$arg1=10;$arg2=20;
add($arg1,$arg2);//芝士傳入的實參,可以是變量或者其他有值的表達式
?>也就是調(diào)用時傳給函數(shù)的值是實參,函數(shù)會把實參賦值給形參,然后形參在函數(shù)中運行
函數(shù)外部定義的變量名字與函數(shù)定義的=形參名字沖突(重名)是沒有任何關(guān)系的,也就是同名形參在不同函數(shù)可以重復(fù)使用
引用傳遞
有的時候,希望在函數(shù)內(nèi)部拿到的外部數(shù)據(jù),能夠在函數(shù)內(nèi)部改變,那么就需要明確告知函數(shù)(定義時),函數(shù)才會在調(diào)用的時候去主動獲取外部數(shù)據(jù)的內(nèi)存地址。
基本定義語法:
Function 函數(shù)名(形參1,$形參2){
//函數(shù)體
}
在調(diào)用的時候,必須給引用傳值的參數(shù)位置傳入實際參數(shù)蘇,而且參數(shù)本身必須是變量。(變量才有指向的數(shù)值的內(nèi)存地址)
<?php
function display($a,&$b){
$a=$a*$a;
$b=$b*$b;
echo $a,'<br>',$b,'<br/>';
}
$a=10;$b=5;
display($a,$b);
echo'<hr/>',$a,'<br/>',$b;
?>
由于$,所以函數(shù)在定義的時候,對應(yīng)的b形參采用的是取地址,所以在實參傳入之后,系統(tǒng)b取到了外部變量b的內(nèi)存地址,a只去到了值,所以a只改變了函數(shù)內(nèi)部自己,而b改變自己的同時也改變了外部
引用傳值注意事項:在傳入實參的時候,必須傳入變量
函數(shù)體:函數(shù)內(nèi)部(大括號{}里面)的所有代碼都稱之為函數(shù)體 函數(shù)返回值:
返回值:return,指的是將函數(shù)實現(xiàn)的結(jié)果,通過return關(guān)鍵字返回給函數(shù)外部(函數(shù)調(diào)用處);在php中所有的函數(shù)都有返回值(如果沒有明確return使用,則系統(tǒng)默認返回null)
注意:函數(shù)的返回值可以是任意數(shù)據(jù)類型
return會直接結(jié)束函數(shù),在return后的無法執(zhí)行(函數(shù)內(nèi))
return還可以在文件中直接使用(不在函數(shù)里面);代表文件將結(jié)果return
后面跟的內(nèi)容,轉(zhuǎn)交給包含當前文件的位置.(通產(chǎn)在系統(tǒng)配置文件中使用較多)
在文件中也代表著終止文件后面的代碼
靜態(tài)變量
關(guān)鍵字:static,是在函數(shù)內(nèi)部定義的變量,使用static關(guān)鍵字修飾,用來實現(xiàn)跨函數(shù)共享數(shù)據(jù)的變量,函數(shù)運行結(jié)束所有局部變量都會清空,如果重新運行一下函數(shù),所有的局部變量又會重新初始化
基本語法:
function 函數(shù)名(){
//定義變量
static $變量名=值 //通常會在定義的時候就直接賦值
}
<?php
function display(){
$local =1;
static $count =1;
echo $local++,$count++,'<br/>';
}
display();//11
display();//12
display();//13
?>函數(shù)在調(diào)用的時候,會自動跳過static關(guān)鍵字這一行,也就是靜態(tài)變量在使用后不會被釋放
到此這篇關(guān)于PHP函數(shù)原理理解詳談的文章就介紹到這了,更多相關(guān)PHP函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows下的PHP 5.3.x安裝 Zend Guard Loader教程
這篇文章主要介紹了Windows下的PHP 5.3.x安裝 Zend Guard Loader教程,安裝方法很簡單,下載DLL文件,加入配置文件即可,需要的朋友可以參考下2014-09-09
php模擬asp中的XmlHttpRequest實現(xiàn)http請求的代碼
為了自己方便模擬asp里面的xmlhttp組件寫的phphttp請求類,基本的功能都實現(xiàn)了,支持gzip壓縮2011-03-03
詳解WordPress開發(fā)中的get_post與get_posts函數(shù)使用
這篇文章主要介紹了WordPress開發(fā)中的get_post與get_posts函數(shù)使用,其中一般使用get_posts()函數(shù)來返回文章數(shù)組而較少使用get_post(),需要的朋友可以參考下2016-01-01
利用discuz自帶通行證整合dedecms的方法以及文件下載
利用discuz自帶通行證整合dedecms的方法以及文件下載...2007-03-03
解析WordPress中控制用戶登陸和判斷用戶登陸的PHP函數(shù)
這篇文章主要介紹了WordPress中控制用戶登陸和判斷用戶登陸的PHP函數(shù),WordPress現(xiàn)在多用戶功能已推出了一段時間,針對多用戶需求的開發(fā)也日益增多,需要的朋友可以參考下2016-03-03

