標籤:
目錄:
PHP學習筆記——1.變數
PHP學習筆記——2.常量
PHP學習筆記——3.運算子
PHP學習筆記——4.控制結構
PHP學習筆記——5.函數
1.概念
從編程的角度,
將若干語句封裝在一起,取個名字
再依據名稱進行調用,即為函數
2.聲明及調用
function abc(形參) {
...
return 值;
}
abc(實參);
實際上,形參即為變數名,實參即為變數值
3.命名規範
和變數一致,但不區分大小寫
4.預設參數
function abc(形參=‘預設值‘) {
...
}
abc(); =>預設值
abc(實參); =>傳入值
註:若有多個形參,且其中某個形參有預設值,則將其放在最後
5.函數的範圍
局部變數:函數內部的變數
全域變數:函數外部的變數
預設情況下,函數體內的變數,與外界的變數無關
註:JS中全域變數會被函數內部找到調用,但PHP不會
執行函數式,會開闢一塊獨立調用空間,調用完即釋放
6.函數的執行權與執行權的交回
當調用函數時,程式的執行權進入到函數內部
當語句執行完/return時,執行權即交回
7.函數傳回值
有return值則返回return值
若沒有return值或return為空白則返回NULL
註:return只能返回 一個 值/複合值
8.動態函數
function wel(){
echo ‘歡迎‘;
}
function hi(){
echo ‘你好‘;
}
$func=$_GET[‘func‘]; <=wel/hi
$func(); =>歡迎/你好
加()後,PHP即會將括弧前的值當做函數進行解析
9.引用傳參
$age=19;
function foo(&$num){
$num+=5;
}
foo($age);
echo $age; =>24
註:此時傳遞的不是$age的值19,而是將$age的地址傳遞給了$num,
當$num+=5時,$age自然也跟著改變了
所以,局部變數和全域變數並不是水火不容的
是有機會相互影響的,如引用傳參、超全域變數
10.遞迴
①定義
函數在其內部調用自身
②初識
例:求1到100的和
可分析分:
sum(100) == sum(99) + 100
sum(99) == sum(98) + 99
...
sum(2) == sum(1) +2
sum(1) == 1
即:
function sum ($n) {
if($n > 1) {
return sum($n-1) + $n;
}else{
return 1;
}
}
例:遞迴操作聯級目錄
a{1,2(A,B<①②③>,C),3}
則操作順序依次為 1 2 A B ① ② ③ C 3
③注意
因遞迴為自身調用自身,所以層次太深,不宜使用
必須有一個終止條件
11.超全域變數
①定義
一般情況下,頁面內聲明的‘普通全域變數‘,在函數內訪問不到
但:‘常量‘在函數內能訪問
且還有一類變數——超全域變數,在頁面的任意一處(無論是多深層的函數),
都可直接存取
②九大超全域變數
$_GET[]=>接收地址欄參數
$_POST[]=>接收POST型參數(如:使用者註冊參數)
$_PEQVEST[]=>是$_GET、$_POST、$_COOKIE的並集
$_FILES[]=>檔案上傳
$_COOKIE[]=>使用者登入
$_SESSION[]=>使用者登入
$_ENV[]
$_SERVER[]=>伺服器及訪客資訊(如使用者所使用的系統版本、IP地址等)
$_SERVER[‘REMOTE_ADRR‘]=>使用者IP
$_SERVER[‘HTTP_USER_AGENT‘]=>使用者瀏覽器資訊
$_GLOBALS[]=>頁面內所有全域變數的‘名單‘,可在其中找到所有聲明過的變數
global關鍵字,用於在函數體內部引用全域變數
例:$age = 5;
function t(){
global $age;=>引用了全域範圍內的$age
$age++;
}
t();
echo $age;=>6
@zhnoah
出處:http://www.cnblogs.com/zhnoah/
本文著作權歸本人和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連
接,否則保留追究法律責任的權利。
PHP學習筆記——5.函數