(五)變量作用域
通常說的作用域,有2種
局部作用域:只能在所定義的函數範圍內使用
全局作用域:在函數的“外部”範圍使用
Php中,局部和全局作用域不重疊,即局部不能使用全局的變量,全局不能使用局部的變量(內部與外部的變量名可以重複,互不影響)
Js中,全局變量包括局部作用域
但還有兩種:
超全局:函數內外都可以使用(只有系統內部預定義的幾個,不能自己創建)
靜態局部作用域(static):也是局部,數據能夠在函數退出後仍然保持不丟失。
局部訪問全局的特定語法
1.在局部範圍內,使用global關鍵字對全局變量進行一次聲明,就可以使用了
語法:global $變量名;
實際上,函數中的global語句,創建了一個與外部變量同名的局部變量,並通過“引用”的方式指向外部變量的數據區
2.在函數中,使用$GLOBALS超全局數組來引用全局變量
用$GLOBALS超全局數組作用:用於存儲所有全局變量的數據:變量名爲下標,變量值爲對應元素值
示例:在函數中寫:$v1=$GLOBALS[‘v1’];就可調用全局變量v1
使用$GLOBALS操作全局變量,是直接操作,不是引用操作,如果unset該對應元素,則全局變量也被unset
3.使用$GLOBALS創建一個新的元素,可以創建全局變量。如: $GLOBALS[‘v2’]=10;
全局訪問局部的特定語法
1.通過引用傳遞的方式向形參傳遞一個引用實參變量(函數的引用傳遞)
2.使用函數的引用返回形式(引用傳遞方式返回數據)
3.函數中使用global關鍵字來首次引用一個全局變量,則函數結束後在全局範圍內可以使用該變量
(六)有關函數的系統函數
function_exists();//判斷某個函數是否被定義過,返回布爾值
示例:if(function_exists(“func1”)==false){
function func1(){}
}
func_get_args();//獲得一個函數所接收到的所有實參數據,結果是一個數組
func_get_arg(n);//獲得一個函數所接收到的第n個實參數據(n從0開始)
func_num_args();//獲得一個函數所接收到的所有實參數據的個數
(七)函數相關編程思想
遞歸思想(遞歸函數):在一個函數中,有至少一條語句,又會去調用該函數自身
要有遞歸函數的出口,即停止調用
總結:爲了解決一個大問題,根據現實邏輯,該問題可以通過比它小一級的同類問題的答案而“輕鬆得到”。小一級的問題又可通過更小一級的問題而輕鬆得到,依次類推—直到最小問題,通常就是一個已知數(答案)。(由大到小,再到大)
舉例:求某個數的階乘
遞推思想(迭代思想):由小到大(推薦使用,效率比遞歸要高)
舉例:求斐波那契數列(某項的值是前兩項的值的和)的第n項的值
(八)常用內部函數
字符串函數
時間函數