php函數(二)

(五)變量作用域

通常說的作用域,有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項的值


(八)常用內部函數

字符串函數

時間函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章