php入门教程ppt,PHP与MySQL入门学习指南.ppt

《PHP与MySQL入门学习指南.ppt》由会员分享,可在线阅读,更多相关《PHP与MySQL入门学习指南.ppt(18页珍藏版)》请在人人文库网上搜索。

1、PHP5與MySQL5 入門學習指南,第 14 章 自定函數,凱文瑞克 著,本章大綱,14-1 建立函數 14-2 參數的傳遞 14-3 預設參數值 14-4 可變長度參數 問題與討論,14-1 建立函數,自定函數的格式如下 Function 自定函數名稱 ($arg1, $arg2, . $argn) 函數敘述 ; return 函數返回值 ; 自定函數以 Function 開始, 表示後面要定義一個函數。緊接著就是函數的名稱。$arg 表示傳入函數的參數, 參數依序排列以 , 做分隔。函數敘述就是設計者希望處理資料的內容, 可以是單行或多行指令。最後 return 是表示以函數的名稱回傳一。

2、個值給主程式, 當然主程式也必須要有一個變數來接受函數的回傳值。如果要傳回多個值則必須利用 list函數來接收函數傳回的值,1: 數量 : $amount n; 4: echo 金額: .$price * $amount. ; 5: 6: ? 7: 8: 自定函數 9: 10: 18: 19:,第 2-5 行定義一個 Pay 函數, 第 3 行顯示商品價格和數量, 第 4 行顯示商品金額. 在這個範例中函數並沒有回傳值. 第 11-12 價格 ($Price) 和數量 ($Amount). 第 13 行呼叫 Pay 函數同時將價格及數量傳入函數. 經函數處理後如圖 14-1 顯示前三行的結果.。

3、 第 14-15 行重新定義價格和數量. 第 16 行第 2 次呼叫 Pay 函數. 當然傳入 Pay 函數的是第 14-15 行新設定的價格及數量. 經函數處理後如圖 顯示後三行的結果,1: 數量 : $amount n; 4: $S=$price * $amount ; 5: return $S ; 6: 7: ? 8: 9: 自定函數 10: 11: ; 16: $Price=60 ; 17: $Amount=50 ; 18: $total2 = Pay($Price, $Amount) ; /第二次呼叫函數 19: echo 金額 : $total2 ; 20: $total2+=$t。

4、otal1; 21: echo 總金額 : $total2 ; 23: ? 24: 25:,函數 Pay() 會計算總價並利用變數回傳給 $total, 最後將二項商品金額顯示在網頁上,1: ; 4: return array(Hello, My, friend); 5: 6: ? 7: 8: 多個回傳值 9: 10: ; 13: echo $msg1 $msg2 $msg3; 14: ? 15: 16:,第 2-5 行定義函數 message(). 第 4 行利用 array() 傳回 3 個文字串. 有 3 個文字串自函數傳回來, 所以第 11 行利用 list() 接收回傳值, 第 1 。

5、個回傳值對應第 1 個變數 $msg1, 依此類推. 第 13 行顯示接收的三個變數,14-2 參數的傳遞,自定函數的參數傳遞可以分成二種方式 傳址呼叫 傳值呼叫,14-2-1 傳值呼叫(Call By Value,傳值呼叫的方式是由主程式傳遞變數的值給自訂函數的參數,1: ; 4: echo Price : $Price Amount : $Amount n; 5: $Total=$Price * $Amount ; 6: echo Total in Function Pay : $Total n ; 7: 8: ? 9: 10: 傳值呼叫 11: 12: ; 18:echo Price :。

6、 $Price Amount : $Amount n; 19:echo Total in main : $Total ; 20: ? 21: 22:,範例是使用傳值呼叫, 所以一開始第 15 行 $Total 起始值為 0, 然後第 16 行傳入 Pay 時會複製一個 0 的值給 Pay 中的 $Total。此時主程式 $Tota l與 Function Pay() 的 $Total 是分別二個不同變數。經函數計算之後第 5 行 $Total 值就變成 9000 而主程式 $Total 值是 0 不會改變, 因為這二者之間並沒有關係。所以在圖 14-2 中可以看到在 Function Pay(。

7、) 的 $Total=9000, 而在 main 中 $Total 為 0,14-2-2 傳址呼叫(Call By Reference,傳址呼叫是傳入變數的位址而不是值, 所以函數參數是接受主程式傳來的一個位址。因此參數會指向原變數 由於 PHP 5 的預設值不予許使用 call by reference 因此需要將 PHP.INI 中的allow_call_time_pass_reference設定為 on才可以使用,1: ; 4: echo Price : $Price Amount : $Amount n; 5: $Total=$Price * $Amount ; 6: echo Tot。

8、al in Function Pay : $Total n ; 7: 8: ? 9: 10: 傳址呼叫 11: 12: ; 18:echo Price : $Price Amount : $Amount n; 19:echo Total in main : $Total ; 20: ? 21: 22:,第 2 行參數 $Total 前面加上 4:$total=$price * $amount ; 5:echo Total in Function Pay : $total n ; 6:echo n ; 7: 8: ? 9: 10: 選擇傳遞方式 11: 12: n ; 18:Pay($Price。

9、, $Amount, 20: ? 21: 22:,Pay 函數一共被呼叫二次, 第 16 行第一次呼叫 Pay 函數是屬於傳值呼叫的方式。第 18 行第二次呼叫是傳址呼叫, 在呼叫函數時傳入參數的寫法是 4:echo 數量 : $amount 個 ; 5:$showcnt=$discount*10 ; 6:echo 折扣 : $showcnt 折 ; 7:return $price*$amount*$discount ; 8: 9: ? 10: 11: 預設參數 12: 13: ; 17:$Discount=0.5 ; 18:$cost=Pay($Price, $Amount, $Discou。

10、nt) ; /傳入$Discount參數 19:echo 總價 : $cost 元n ; 20:echo 一般折扣: ; 21:$cost=Pay($Price, $Amount) ;/未傳入$Discount, 以預設值帶入 22:echo 總價 : $cost 元 ; 23: ? 24: 25:,discount 被設定了預設值為 0.8。當參數設定預設值之後, 一旦函數呼叫時未傳入參數值, 參數值就會被預設值所取代,第一點, 預設值必須是一個常數, 不可以是變數。 第二點, 預設值的參數必須是在參數列的右邊開始, 由右向左延伸。這一點很容易理解, 如果有一函數如下 Function te。

11、st ($A=10, $B) 在函數呼叫時僅傳入一個數值 test (20) ; 這個時候 20 是應該傳給 $A 還是 $B ? 由此可知上面的寫法有問題。如果函數改寫如下: Function test($B, $A=10) 則函數呼叫 test(20) ; /$B=20, $A=10(預設值) test(20,15) ; /$B=20, $A=15 這樣無論是傳入一個參數或二個參數都不會混淆。所以凡是參數有預設值則必須寫在參數列的最右邊開始依序向左延伸,使用預設值的注意事項,14-4 可變長度參數,一種參數傳輸技巧. 配合可變長度參數擷取參數時所使用的函數. func_num_args()。

12、 會傳回傳入參數的個數. func_get_ars(n) 會傳回第 n 個參數, 參數是由第 0 個開始計算. 如果 n 值大於參數個數則會傳回 False. func_get_args() 將所有參數以陣列方式傳出,1: ; 5: echo 參數內容如下; 6: $op=func_get_args(); 7: for ($i=0; $i; 9: 10: 11: ? 12: 13: 可變長度參數 14: 15: ; 17: var_len(10,20); 18: echo ; 19: echo 3個參數 ; 20: var_len(Hello,My,Friend); 21: ? 22: 23:,var_len() 函數並沒有指定函數個數, 由是透過 func_num_args()等函數取讀參數個數與內容,問題與討論,參數傳遞時,何謂傳值呼叫與傳址呼叫? 何謂預設參數?使用時需注意什麼? 請將第 9 章問題4之商品價格計算式改成自訂函數,並將非會員折扣設定為預設參數。 請改寫第 12 章問題 6,將每個數學計算各自寫成一個自訂函數。 請比較固定參數與可變長度參數 如何傳回一個以上的參數。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值