1糠涛、什么是變量的作用域
變量的作用域就是變量的范圍,變量的范圍即它定義的上下文背景(即它的生效范圍)集漾,大部分PHP變量只有一個(gè)單獨(dú)的范圍,這個(gè)單獨(dú)的范圍跨度包含了include和require引入的文件
示例:
<?php
$outer = 'str';
function myFunc(){
var_dump($outer);//打印為NULL具篇,內(nèi)部為局部變量
}
myFunc();
內(nèi)部函數(shù)想要引用外部變量可以引入global關(guān)鍵字
<?php
$outer = 'str';
function myFunc(){
global $outer;
var_dump($outer);//打印為NULL凌埂,內(nèi)部為局部變量
}
myFunc();
2、什么是靜態(tài)變量
靜態(tài)變量僅在局部函數(shù)域中存在瞳抓,當(dāng)函數(shù)執(zhí)行離開此作用域時(shí),其值不會(huì)消失孩哑。
- static
1.僅初始化一次
2.初始化時(shí)需要賦值
3.每次執(zhí)行函數(shù)該值會(huì)保留
4.static修飾的函數(shù)僅在函數(shù)內(nèi)部有效
5.可用于記錄函數(shù)調(diào)用次數(shù),從而在某些條件下終止遞歸
示例1:
<?php
function myFunc(){
static $a = 1;
echo $a++;
}
myFunc();//1
myFunc();//2
myFunc();//3
示例2:
<?php
$count = 5;
function getCount()
{
static $count;
return $count++;
}
echo $count;//5
++$count;
echo getCount();//第一次調(diào)用胳蛮,初始化為NULL丛晌,NULL++為1 由于是后++,第一次返回NULL
echo getCount();//第二次調(diào)用仅炊,count = 1
echo "\n";
運(yùn)行結(jié)果:
5 1
3澎蛛、函數(shù)的引用
示例:
<?php
function &myFunc(){
static $b = 10;
return $b;
}
$a = myFunc();
$a = &myFunc();
$a = 100;
echo myFunc();//100