在
需要注意的是标识符必须以字母或者下划线开头,并且只能包括字母、数字和下划线。 常量的定义
顾名思义,常量是一个不能改变的量,在脚本执行期间常量的值不能改变。
常量默认为大小写敏感,也就是区分大小写。
常量可以用define函数来定义,define函数的语法如下:
Bool define(string name ,value [,bool case_insensitive])
其中name指常量名。value指常量的值,常量的值必须是标量,也就是专门用于表示一个特定值的量。case_insensitive表示常量名是否为大小写敏感的,如果为TRUE,则表示常量名是大小写不敏感的;反之,则表示常量名是大小写敏感的,默认值为FALSE。
以下的代码是一个使用define函数定义常量的例子。
<?php define(“Z”, “phpdo.net./n”); //定义Z为常量,case_insensitive为FALSE,区分大小写 echo Z.”
”; //输出Z echo z.”
”; //变量Z拼写错误,这时不会输出Z的值,输出z define(“L”, “phpdo.net./n”, TRUE); //设置case_insensitive为TRUE,不区分大小写 echo L.”
”; //输出phpdo.net echo l.”
”; //输出phpdo.net ?>
结果:
phpdo.net. z phpdo.net. phpdo.net.
变量的定义
变量是用来临时存储变量的值。
在
变量名称是大小写敏感的,但是与常量不同的是,指定变量的时候,没有大小写敏感选项,即永远是大小写敏感的。
PHP中的变量不需要先定义后使用,在变量第一次使用的时候,变量被自动定义。但是类中的变量需要先定义,后面后详细介绍。
PHP提供两种方式对变量进行赋值:
传值赋值和传地址复制。如下:
使用传值赋值对变量进行赋值时,整个原始表达式的值将被复制给目标变量。这时,改变原始表达式时,目标变量的值将不会被影响。
使用传值赋值对变量进行赋值时,目标变量简单的引用了原始变量。改变目标变量将影响到原始变量,反之亦然。注:有汇编基础的PHP爱好者将会很容易理解这点。
代码如下:
<?php $name = ‘php’; //对变量$name进行赋值(传值赋值) $name_b = $name; //对变量$name_b 进行赋值(传值赋值) $addr = &$name; //对变量$addr进行赋值(传地址赋值) $name = “phpdo”; //改变$name的值 echo $name.”
”; //输出$name,会发现$name的值发生了变化 echo $name_b.”
”; //输出$name_b,php echo $addr.”
”; //输出$addr,会发现$addr的值发生了变化 $addr = “phpdo.net”; //因为这里$addr是$name的地址,改变目标变量影响了原始变量,反之亦然。 echo $name.”
”; //输出$name,会发现$name的值发生了变化 echo $addr.”
”; //输出$addr,会发现$addr的值发生了变化 ?>
结果: phpdo php phpdo phpdo.net phpdo.net
本地变量、全局变量和静态变量。
本地变量:在PHP中,按照缺省情况,任何用于函数内部的变量都将被限制在局部函数范围内。
下面是个说明本地变量的例子:
<?php $a = phpdo.net; function func() //函数func { echo “变量phpdo.net在函数内部的调用: “.$a.”
”; //函数内部的变量调用,可以看到$a没有被调用 } func(); echo “变量phpdo.net在函数外部的调用: “.$a.”
”; //函数外的变量调用,$a被调用 ?>
结果:
变量phpdo.net在函数内部的调用: 变量phpdo.net在函数外部的调用: phpdonet
分析:可以看到3——6行$a没有被定义。
下面这段代码,通过形参将$a得值传入了函数,代码如下:
<?php $a = phpdo.net; //函数func function func($a) { echo “变量phpdo.net在函数内部的调用: “.$a.”
”; //因为func有了形参$a,值phpdo.net可以被正确地传入了函数。 } func($a); echo “变量phpdo.net在函数外部的调用: “.$a.”
”; //输出phpdo.net ?>
结果:
变量phpdo.net在函数内部的调用: phpdonet 变量phpdo.net在函数外部的调用: phpdonet
全局变量:任何可以应用于全部PHP脚本的变量。
1、使用global关键字;代码如下:
<?php $a = phpdo.net; function func() //函数func { global $a; //在函数内部,使用global关键字标示$a为全局变量 echo “变量phpdo.net在函数内部的调用: “.$a.”
”; //输出phpdo.net } func(); echo “变量phpdo.net在函数外部的调用: “.$a.”
”; //输出phpdo.net ?>
结果:
变量phpdo.net在函数内部的调用: phpdonet 变量phpdo.net在函数外部的调用: phpdonet
2、使用特殊的PHP自定义$GLOBALS数组;代码如下:
<?php $a = phpdo.net; function func() { echo “变量phpdo.net在函数内部的调用: “.$GLOBALS["a"].”
”; //使用$GLOBALE["a"]数组申明$a为全局变量 } func(); echo “变量phpdo.net在函数外部的调用: “.$a.”
”; //输出phpdo.net ?>
结果:
变量phpdo.net在函数内部的调用: phpdonet 变量phpdo.net在函数外部的调用: phpdonet
静态变量:PHP中的另一个重要类型,静态变量仅在局部函数中存在,但当程序执行离开此作用域时,其值并不丢失。
代码如下:
<?php function func() { static $php = 1; //在函数内部,使用static关键字标示$a为静态变量 echo “变量php在函数内部 “.$php.”
”; $php++; } func(); func(); ?>
结果:
变量php在函数内部 1 变量php在函数内部 2
分析:可以看到在func()执行后,$a并没有被重新初始化,还是为1,上述代码运行后的结果$a为3。这点各位应该没有异议吧?
动态变量:动态变量的变量名是可变的,也就是通过另一个变量传递的,在PHP中,对动态变量使用”$$”两个美元符号进行定义。
代码如下:
<?php $var_name = “php”; //定义变量$var_name的值 $$var_name = “phpdo.net”; //使用$var_name的值(php)作为这个变量的变量名 echo $var_name.”
”; //输出$var_name,php echo $$var_name.”
”; //输出phpdo.net echo $php.”
”; //使用这个方法可以实现同样的变量调用,输出phpdo.net ?>
结果:
php phpdo.net phpdo.net