.静态变量
在函数内部static $a = 0;
注意:声明中用表达式的结果对其赋值会导致解析错误如static $a =3+3;(error)
静态变量仅在局部函数域中存在(函数内部),函数执行完之后,变量值不会丢失,可用于递归调用
在php教程中的变量范围里,有一个非常重要的变量—php静态变量static。在接下来的这篇文章中,我们将会以具体的代码示例为大家详细介绍有关php静态变量static的主要用法,希望对大家有所帮助。
看看下面的例子:
例子 演示需要php静态变量static的例子
本函数没什么用处,因为每次调用时都会将 $w3sky 的值设为 0 并输出 "0"。将变量加一的 $w3sky++ 没有作用,因为一旦退出本函数则变量 $w3sky 就不存在了。要写一个不会丢失本次计数值的计数函数,要将变量 $w3sky 定义为静态的:
例子 使用php静态变量static的例子
现在,每次调用 test() 函数都会输出 $w3sky 的值并加一。
静态变量也提供了一种处理递归函数的方法。递归函数是一种调用自己的函数。写递归函数时要小心,因为可能会无穷递归下去。必须确保有充分的方法来中止递归。一下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止
function zdy ()
{
static $message = 0; //初始化一个静态变量
$message+=1; //静态变量加1
echo $message." "; //输出静态变量
}
function zdy1()
{
$message = 0; //声明函数内部变量
$message += 1; //局部变量加1
echo $message." "; //输出局部变量
}
for($i=0;$i zdy();
echo "";
for($i=0;$i zdy1();
echo "
";
?>
输出的是:
1 2 3 4 5 6 7 8 9 10
1 1 1 1 1 1 1 1 1 1
全局变量
在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用,在全局范围内访问变量可以用特殊的 php 自定义 $globals 数组:
如:$globals["b"] = $globals["a"] + $globals["b"];
在一个函数域内用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用
global $obj;
注:对于变量的 static 和 global 定义是以 应用 的方式实现的
6.给变量赋值:传地址赋值(简单引用):
$bar = &$foo; //加&符号到将要赋值的变量前
改动新的变量将影响到原始变量,这种赋值操作更加快速
注意:只有命名变量才可以传地址赋值
注意:如果
$bar = &$a;
$bar = &$foo;
改变$bar的值只能改变变量foo的值,而不改变a的值(引用改变了)
<?php
$my_var = 'hello world';
test_global();
function test_global() {
// now in local scope
// the $my_var variable doesn't exist
// produces error: "undefined variable: my_var"
echo $my_var;
// now let's important the variable
global $my_var;
// works:
echo $my_var;
}?>