Functions
function是PHP的核心(PHP提供了上千個function,使開發程式更方便),
也是結構化程式和物件導向程式的基礎。
1.function基本語法:
function名稱命名原則跟變數相同,只是function名稱不區分大小寫。
宣告位置可以在使用位置的前後,樣式如下:
//宣告
function test()
{
程式碼...
}
//使用
test();
2.function的回傳值:
用return停止function的執行並回傳值,如下:
//宣告
function test()
{
$a = "abc";
return $a;
//以下程式永不執行
$a = "123";
return $a;
}
//使用
echo test();
如果return後面不接回傳值(或者function沒有寫上return),則會回傳NULL。
3.變數範圍
在PHP,一個變數的可見範圍有三種:
1)全域變數:在一個php程式檔案中,不是宣告在function或class中的變數就是全域變數,
在程式的任何地方都可使用該變數,function與class內除外,
除非在function或class的method使用global指令或當作參數傳入。
2)function變數:變數在function內初始並使用,當function結束後變數也消失,傳入參數也是。
3)class變數:如果是method裡的變數(非成員變數),可見範圍與function同。成員變數就看宣告時的定義,
有public、protection、private三種,在php程式中或class中的可見範圍有所不同,待"PHP的OO程式設計"篇介紹。
$a = 1; //我是全域變數
$b = 2; //我是全域變數
$c = 3; //我是全域變數
$d = 4; //我是全域變數
function test($c,&$d) //這裡的$c與$d與全域的$c與$d無關,$d參數是傳入全域的$d的reference
{
$a = 1.5; //我是function內變數,與全域變數無關
global $b; //把全域變數拉進來,在此修改$b,全域變數$b也會改變
$b = 2.5;
$c++; //修改傳入參數,一樣不影響全域變數
$d++; //與$b一樣效果
}
test($c,$d);
echo $a."<br>";
echo $b."<br>";
echo $c."<br>";
echo $d."<br>";
不過使用global指令有時會造成困擾,分不清在function中的變數是否為全域變數。
如果在function中使用全域變數,建議用$GLOBALS["變數名稱"]。以上例,可用$GLOBALS["b"]
4.可變的傳入參數與參數預設值
function test($a="1") //我是參數預設值範例
{
echo $a;
}
test(); //輸出為"1"
test("a"); //輸出為"a"
傳入的參數數量可以多於function設定的數量
function test()
{
echo func_num_args(); //取得傳入參數的數量
echo func_get_arg(0); //取得傳入的第一個參數,對於func_get_arg來說offset是0,以此類推。
print_r(func_get_args()); //取得所有傳入的參數
}
$a = 1;
$b = 2;
$c = 3;
test($a,$b,$c);