<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="分析PHP变量作用域和地址引用问题" id="card1">
<p> 游客</p><p>
标题:分析PHP变量作用域和地址引用问题<br/>
正文:<br/>
作用域的概念：在PHP脚本的任何位置都可以声明变量，但是，声明变量的位置会大大影响访问变量的范围。这个可以访问的范围称为作用域。主要的常用的包括：局部变量、全局变量、静态变量。1、局部变量：就是在函数内声明的变量，他保存在内存的栈内，所以访问速度很快。仅在函数内有效。2、全局变量：与局部变量相反，全局变量可以在程序的任何地方访问。只要在变量前面加关键字GLOBAL,就可以将其识别为全局变量。在整个php文件内有效。3、静态变量：用static修饰只存在于函数作用域的变量，函数执行结束后其值并不消失。注：初始化后不能再次进行初始化，不能用表达式来赋值。代码如下:<br/>function test() <br/>{ <br/>static $b=0;//申明静态变量，放在函数外部声明的话，在函数内部是用不到的$b=$b+1;echo $b; <br/>} <br/>test();//这条语句会输出　$b的值　为１ <br/>test();//这条语句会输出　$b的值　为2 <br/>注：static $b=0 这一赋值操作只会在变量第一次被初始化的时候执行。附A：类中静态成员和静态方法，差不多只是调用的时候统一使用类名或者self或者parent加：：xxx，他们的作用域和这个一样,但是他的声明是在方法外部的附B：js里面的作用域使：用var aa=‘xxx'；在函数外面声明的就是全局变量（不管是否带有修饰符var）。在函数内部使用 var声明的是局部变量，不使用var修饰的是全局变量。附C:关于引用PHP引用：就是在变量、函数或者对象前加&amp;amp;.php中的引用就是想用不同的名字访问同一个变量的内容。1、变量的引用：代码如下:<br/>$a=&quot;ABC&quot;;$b =&amp;amp;$a;echo $a;//这里输出:ABCecho $b;//这里输出:ABC$b=&quot;EFG&quot;;echo $a;//这里$a的值变为EFG 所以输出EFGecho $b;//这里输出EFG<br/>2、函数的传址调用代码如下:<br/>function test(&amp;amp;$a){$a=$a+100;}$b=1;echo $b;//输出１test($b); //这里$b传递给函数的其实是$b的变量内容所处的内存地址，通过在函数里改变$a的值　就可以改变$b的值了echo &quot;&amp;lt;br&amp;gt;&quot;;<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=891&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=891&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=891&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=891&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=891">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=891">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>