1、什么是变量的作用域
变量的作用域就是变量的范围,变量的范围即它定义的上下文背景(即它的生效范围),大部分PHP变量只有一个单独的范围,这个单独的范围跨度包含了include和require引入的文件
示例:
<?php
$outer = 'str';
function myFunc(){
var_dump($outer);//打印为NULL,内部为局部变量
}
myFunc();
内部函数想要引用外部变量可以引入global关键字
<?php
$outer = 'str';
function myFunc(){
global $outer;
var_dump($outer);//打印为NULL,内部为局部变量
}
myFunc();
2、什么是静态变量
静态变量仅在局部函数域中存在,当函数执行离开此作用域时,其值不会消失。
- static
1.仅初始化一次
2.初始化时需要赋值
3.每次执行函数该值会保留
4.static修饰的函数仅在函数内部有效
5.可用于记录函数调用次数,从而在某些条件下终止递归
示例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();//第一次调用,初始化为NULL,NULL++为1 由于是后++,第一次返回NULL
echo getCount();//第二次调用,count = 1
echo "\n";
运行结果:
5 1
3、函数的引用
示例:
<?php
function &myFunc(){
static $b = 10;
return $b;
}
$a = myFunc();
$a = &myFunc();
$a = 100;
echo myFunc();//100