前兩天講過PHP基礎知識的判斷條件和流程控制,今天來講講PHP基礎知識之PHP基礎入門--函式!
一、函式的宣告與使用
1、函式名是識別符號之一,只能有數字字母下劃線,開頭不能是數字,
函式名的命名,須符合"小駝峰法則":myNameIsXiaoxi my_name_is_xiaoxi
函式名不區分大小寫,func() Func() FUNC() 都可以
函式名不能與已有的函式名重復,不能與系統函式名重復,
2、function_exists("func1");用于檢測函式是否已宣告;
注意:傳入的函式名,必須是字串格式:回傳結果為true/false,
二、PHP中變數的作用域
1、區域變數:宣告在函式內部的變數,稱為區域變數,只在函式內部能用,函式外加需使用,需在函式中使用return關鍵字回傳,
2、全域變數:宣告的函式外部的變數,稱為全域變數,
3、函式中,使用變數,默認使用內部區域變數,如果,需在函式中使用全域變數,需要使用global關鍵字,將全域變數參考函式,才能使用,
函式中的變數名,如果與全域變數重復,global陳述句之上,為函式區域變數;global陳述句之下,為系統全域變數,
4、 $GLOBALS[]全域陣列:
$GLOBALS[]陣列,是PHP給我們內置的全域陣列,可以直接給陣列添加值,無論在函式內外宣告,均可在任何地方直接使用,
$GLOBALS["a"] = 10; ---> echo $GLOBALS["a"];//任何位置直接使用
5、函式中使用全域變數,還有一種方式:通過給函式傳參,可以在函式內部使用全域變數;
但是,傳遞以后的引數是函式的區域變數,內部改變,外部不會變,
除非,傳遞的引數是地址function func($a1,&$a2){} //函式內部修改a1,則全域a1不會變,函式內部修改a2,則全域a2會變,
如果函式的形參,出現了取址符號,則,呼叫函式時,實參必須是變數,而不能是字面量,
6、使用require與include包含不會影響作用域,
三、靜態變數
1、靜態變數,使用static關鍵字宣告,static $num = 10;
2、靜態變數的特點:
>>>靜態變數在函式第一次加載的時候進行宣告,
>>>函式使用完不會立即釋放靜態變數,靜態變數在整個腳本執行程序中,只會宣告一次,
>>>同一函式,多次呼叫,共享同一個靜態變數,
四、函式的引數傳遞
1、在PHP中,涉及引數傳遞時:實參串列只能比形參多,
2、常規引數傳遞:function func($a){} func($a);
3、參考引數傳遞:function func(&$a){} func($a);
①通過&參考引數傳遞,函式內修改變數,函式外同步變化
②形參為參考引數,實參只能是變數,不能是字面量 func(10); ×
4、默認引數:function func($b,$a=10){} func(20);
//是$可以不傳,默認為10;$b必須傳遞,否則使用時未定義報錯,
如果引數中既有默認引數,也有非默認引數,那么默認引數串列
必須要在非默認引數串列后面,即呼叫的時候必須保證非默認串列的優先賦值,
5、可變引數串列:由于PHP實參可以比形參多,那么我們可以傳遞N個實參,并通過PHP內置函式取到對應引數,
var_dump(func_get_args());//取所有引數串列(陣列)
var_dump(func_num_args());//回傳引數的總個數相當于count(func_get_args());
var_dump(func_get_arg(0));//根據下標,回傳每個引數
五、變數函式
1、將一個函式名,轉為字串后,賦給一個變數,這個變數,就是我們所說的變數函式,可以加()呼叫函式內容,
function func(){}--->$fun = "func";--->$func();
六、回呼函式
1、使用變數函式,自定義回呼函式
function func($func){$func();}--->function f(){}--->func("f");
2、使用call_user_func_array和call_user_func自定義回呼函式;
兩個函式的第一個引數,均為回呼函式,表示執行當前回呼,
不同點在于:call_user_func_array()第二個引數為陣列,并將陣列的每一個值賦給回呼函式的引數串列,相當于JS中的apply();
而call_user_func,是將回呼函式的引數串列,直接展開寫到第2~多個引數中,相當于JS中的call();
eg:call_user_func_array("func",array(1,2,3));
--> func(1,2,3);
call_user_func("func",1,2,3); --> func(1,2,3);
七、匿名函式
由于變數函式,在呼叫時存在多種呼叫方(func()/$func();)
所以為了讓函式的呼叫更為同一,才產生了匿名函式!!!
宣告匿名函式,函式體后面的分號必不可少!
匿名函式本身也是變數,用var_dump();檢測為Object型別
八、PHP閉包
在PHP中,子函式無法直接訪問父函式的區域變數,必須使用User關鍵詞向下傳遞!!!
文章收集與網路,辛苦收集轉載請備注出處一只大臉貓!
PHP丨PHP基礎知識之流程控制WHILE回圈「理論篇」
PHP丨PHP基礎知識之條件語IF判斷「理論篇」
PHP丨PHP基礎知識之條件語SWITCH判斷「理論篇」
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/24476.html
標籤:PHP
