iT邦幫忙

DAY 3
3

取得PHP認證之路系列 第 3

取得PHP認證之路 - function

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);

上一篇
取得PHP認證之路 - PHP基礎
下一篇
取得PHP認證之路 - 陣列
系列文
取得PHP認證之路5
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
fillano
iT邦超人 1 級 ‧ 2009-10-16 01:05:11

認證不會考5.3的東西吧?

阿福 iT邦新手 3 級 ‧ 2009-10-16 07:41:48 檢舉

那邊是5.3的部分呢?

我要留言

立即登入留言