函數的一些問題
//穩健進行函數定義的方法,使用function_exists()
if(function_exists("f1") == false){
function f1(){}
}
php非常多系統函數,有各種各樣的作用,取查手冊就可以了
參數
定義一個沒有形參的函數,其實可以接受任意個數個參數的,并且這些實際參數都會放進一個數組中,可以用 func_get_args() 來獲得
1.func_get_args()
2.func_num_args() //獲取實參的數量
3.func_get_args($i) //獲取第$i個實參,從0開始計數
返回值
用 return 語句來返回值。注意的是,return后無論跟不跟數據,都會終止函數的運行。
可變函數
和可變變量類似,函數的名字是一個變量
function f1(){
....
}
$v1 = "f1";
$v1(); //可以用變量名來調用函數啦
匿名函數
嘛,就是沒名字的函數,有兩個作用:
1.賦值給一個變量,然后可以像其他函數一樣用變量名進行調用
2.作為另一個函數的實際參數進行使用,這樣就可以在一個函數內,調用另一個函數了?
作用域
- 局部作用域:函數內部范圍
- 超全局作用域:所有代碼中都能用。只有系統定義的幾個而已。$_GET,$_POST,$_REQUEST,$_SERVER,$_COOKIE,$SESSION,$_FILES,$GLOBALS 等等
- 全局作用域:函數外部
一般全局不能訪問局部,局部不能訪問全局。
1.全局訪問局部
在函數內部將變量定義為靜態變量
static $v1 = 12;
//該語句只會執行一次,會令到變量$v1不會被銷毀
//可見,靜態變量可以用來統計一個函數被調用了多少次
2.局部訪問全局(php真搞事情。。。局部居然不能直接訪問全局?叫啥全局。。。)
//方法1:
//函數內部使用關鍵字聲明全局變量同名變量
global $v1, $v2;
//方法2:
$GLOBALS['v1']