開題,我們用題目引入
* 寫出如下程序的輸出結果
<?php
$count = 5;
function get_count(){
static $count;
return $count++;
}
echo $count;
++$count;
echo get_count();
echo get_count();
?>
這段程序的輸出結果是什麼?
分析:
static 靜態變量
變量的作用域:函數體外面爲全局變量 函數體內變量爲局部變量
延伸思考:
函數的參數以及參數的引用
函數的返回值以及引用返回
外部文件的導入(include 和 require)
系統內置函數
知識點:
* 1.變量的作用域
變量的作用域:變量的範圍。變量的範圍即他定義的上下文背景(它的生效範圍)。 大部分的PHP變量只有一個單獨的範圍。這個單獨的範圍跨度同樣包括了include和require的引入文件。
// 例:
$outer = 'str';//全局變量
function myfunc(){
echo $outer;//局部變量
}
全局變量是不能拿到函數體內部來使用的。
如果函數體內部引用外部的全局變量,如下兩種方法
1.局部對全局變量,引用時使用 global關鍵字。
2.$GLOBALS[‘outer’]
函數對於超全局數組可以直接調用
示例如下:
//1.局部對全局變量,引用時使用 global關鍵字
$outer ='str';
function myf1(){
global $outer;
echo $outer;
}
// 2.通過全局數組(魔術數組)$GLOBALS['outer']
$outer ='str';
function myf2(){
echo $GLOBALS['outer'] ;
}
知識點:
- 2.靜態變量
靜態變量僅在局部函數域中存在,但當程序執行離開此作用域時,該內存並不會消失。
static特點:
* 1.僅初始化一次
* 2.初始化時需要賦值
* 3.每次執行函數 該值會保留 即:內存不釋放
* 4.static修飾的變量是局部的 僅在函數內部有效
* 5.可以記錄函數的調用次數,從而可以再某些條件下終止遞歸
如下例子:
function myfunc3(){
static $a =1;//只有首次調用才執行 往後不再執行
echo $a++;//++再後 先返回$a 在計算++哦
}
//調用三次對應$a輸出的情況
myfunc3(); 1
myfunc3() 2
myfunc3() 3
知識武裝到這裏,然後帶着我們的知識武器在回顧到開始的題目中:
最終的結果:51
你答對了嗎