欢迎来到天天文库
浏览记录
ID:5504455
大小:137.00 KB
页数:13页
时间:2017-12-16
《四章 变量、常量、表达式、运算符》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第一节变量、常量4.1.1变量 PHP中一个美元符号后面跟上一个变量名称,即表示一个变量。变量的名称是对大小写敏感的。 变量名与PHP中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。按照正常的正则表达式,它将被表述为: '[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*' 字母为a-z,A-Z,ASCII字符从127到255(0x7f-0xff)。 〈?php $var="Bob"; $Var="Joe"; echo"$var,$Var";//outputs"Bo
2、b,Joe" $4site='notyet';//invalid;startswithanumber $_4site='notyet';//valid;startswithanunderscore $t?yte='mansikka';//valid;'洄is(Extended)ASCII228. ?〉 PHP4提供了另外一种方式给变量赋值:传地址赋值。这意味着新的变量简单的引用(换言之,“成为其别名”或者“指向”)了原始变量。改动新的变量将影响到原始变量,反之亦然。这同样意味着其中没有执行复制操作;因而,这种赋值操作更加快速。尽管如此,任何提速的操作只有在紧密循环
3、或者大数组或者对象才可能被注意到。 使用传地址赋值,简单地追加一个(&)符号到将要赋值的变量前(源变量)。例如,下列代码片断两次输出‘MynameisBob’: 〈?php $foo='Bob';//Assignthevalue'Bob'to$foo $bar=&$foo;//Reference$foovia$bar. $bar="Mynameis$bar";//Alter$bar... echo$bar; echo$foo;//$fooisalteredtoo. ?〉 需要注意的是只有命名变量才可以传地址赋值,这一点非常重要。 〈?php $foo=
4、25; $bar=&$foo;//Thisisavalidassignment. $bar=&(24*7);//Invalid;referencesanunnamedexpression. functiontest() { return25; } $bar=&test();//Invalid. ?〉4.1.2预定义变量 PHP提供了大量的预定义变量。由于许多变量依赖于运行的服务器的版本和设置,及其它因素,所以并没有详细的说明文档。一些预定义变量在PHP以命令行形式运行时并不生效。 请优先使用可用的PHP预定义变量,如超级全局数组。 从PHP4.1.0开
5、始,PHP提供了一套附加的预定数组,这些数组变量包含了来自Web服务器(如果可用),运行环境,和用户输入的数据。这些数组非常特别,它们在全局范围内自动生效,例如,在任何范围内自动生效。为此,它们常因是"autoglobals"或者"superglobals"而闻名。(PHP中尚且没有一种可使用户自定义超级全局变量的机制)超级全局变量罗列于下文中;但是为了得到它们的内容和关于PHP预定义变量的进一步的讨论以及它们的本质,请参阅预定义变量。而且,你也将注意到旧的预定义数组($HTTP_*_VARS)仍旧存在。在PHP5.0.0中,长的PHP预定义数组可以通过设置register
6、_long_arrays来屏蔽。 可变变量:超级全局变量不能被用作可变变量。 如果某些variables_order中的变量没有设定,它们的对应的PHP预定义数组也是空的。4.1.3变量范围 变量的范围即它定义的上下文背景(译者:说白了,也就是它的生效范围)。大部分的PHP变量只有一个单独的范围。这个单独的范围跨度同样包含了include和require引入的文件。范例: 〈?php $a=1; include"b.inc"; ?〉 这里变量$a将会在包含文件b.inc中生效。但是,在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情
7、况将被限制在局部函数范围内。范例: 〈?php $a=1;/*globalscope*/ functionTest() { echo$a;/*referencetolocalscopevariable*/ } Test(); ?〉 这个脚本不会有任何输出,因为echo语句引用了一个局部版本的变量$a,而且在这个范围内,它并没有被赋值。你可能注意到PHP的全局变量和C语言有一点点不同,在C语言中,全局变量在函数中自动生效,除非被局部变量覆盖。这可能引起一些问题,有些人可能漫不经心的改变一个全局变量。
此文档下载收益归作者所有