附1:PHP变量范围

16 篇文章 0 订阅
15 篇文章 0 订阅

1、局部变量
局部变量是在函数内声明的变量,其作用域仅限于函数内部。函数的参数也是局部变量,区别在于,函数参数值来自被调用时传入的值。执行完毕后函数内部的动态变量都将被释放。
eg:

<?php
	function a($b){
		$c = 1;
		echo "$b+$c = " . ($b+$c) . '<br />';
	}
	a(2);//输出3
	echo $b+$c;//函数外部的非法访问,报notice错误,并输出0

2、全局变量
在函数外定义的变量称为全局变量,作用域范围在定义变量开始到本程序文件的末尾。
另外,在函数中无法直接调用全局变量,需要使用关键字global,也可以使用$GLOBALS来代替global。$GLOBALS 是一个超全局变量。
eg:

<?php
	//示例1
	$a = 1;
	$b = 2;
	function Sum(){
	    global $a, $b;
	    $b = $a + $b;
	}
	Sum();
	echo $b;//输出的结果是3

	//示例2
	$c = 1;
	$d = 2;
	function Sum()
	{
	    $GLOBALS['d'] = $GLOBALS['c'] + $GLOBALS['d'];
	}
	Sum();
	echo $d;//输出3

3、静态变量
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。静态变量用static来声明的,未被static声明的默认是动态变量。其在函数执行完之后,内部的静态变量已然保存在内存中。仅在脚本执行期间,第一次调用该函数时被初始化。
另外,定义静态变量时,不能是表达式。例如:static $a = 1+2;或者static $a = (int)1; 都会报错。
eg:

<?php
	function test()
	{
	    static $a = 0;
	    echo $a;
	    $a++;
	}
	test();//输出0
	test();//输出1

静态变量也提供了一种处理递归函数的方法。递归函数是一种调用自己的函数。写递归函数时要小心,因为可能会无穷递归下去。必须确保有充分的方法来中止递归。以下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止:
eg:

<?php
	function test()
	{
	    static $count = 0;
	    $count++;
	    echo $count;
	    if ($count < 10) {
	        test();
	    }
	    $count--;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值