编程
您现在的位置:首页 >> 编程

PHP编程入门教程--常量与变量

常量就是从声明开始,值一直不变的量。常量一旦定义之后,它的值就不能改变了。变量的作用就是存储数值,一个变量具有一个地址,这个地址中存储变量数值信息。

在任何一种编程语言中,不管是常量还是变量,都属于某一种数值类型。PHP支持布尔型(boolean)、整型(integer)、浮点型(float)和字符串(string)四种标量类型,数组(array)和对象(object)两种复合类型,资源(resource)和NULL两种特殊类型等八种原始类型。

1、预定义常量

PHP常量包括预定义常量和用户自定义常量两种。PHP 预定义常量是 PHP 自己预先已经定义的常量, 它可以直接在程序中使用而不用事先声明。PHP 在常量中定义了以下一些常量(注意区分大小写,__FILE__和__LINE__每个下划线占两个英文字符)。

__FILE__:这个默认常量是 PHP 程序文件名。若引用文件 (include 或 require)则在引用文件内的该常量为引用文件名,而不是引用它的文件名。

__LINE__:这个默认常量是 PHP 程序行数。若引用文件 (include 或 require)则在引用文件内的该常量为引用文件的行,而不是引用它的文件行。

PHP_VERSION:这个内建常量是PHP 程序的版本,如 '3.0.8-dev'。

PHP_OS:这个内建常量指执行 PHP 解析器的操作系统名称,如 'Linux'。

TRUE:这个常量就是真值 (true)。

FALSE:这个常量就是伪值 (false)。

E_ERROR:这个常量指到最近的错误处。

E_WARNING:这个常量指到最近的警告处。

E_PARSE:本常式为解析语法有潜在问题处。

E_NOTICE:这个常式为发生不寻常但不一定是错误处。例如存取一个不存在的变量。

这些 E_ 开头形式的常量,可以参考 error_reporting() 函数,有更多的相关说明。

2、自定义常量

在程序写作时,以上的默认常量是不够用。我们可用define()自行定义所需要的常量。以下是例子:

<?php

define("COPYRIGHT", "Copyright &copy; 2000, netleader.126.com");

echo COPYRIGHT;  

?>

3、变量类型 

PHP 的变量类型常用的有以下五种:

1、整型:integer,可以理解为整数型,在32位的操作系统中,它的有效范围是 -2,147,483,648 到 +2,147,483,647。

2、浮点型:double和float,可以理解为小数型。PHP中这两个名称同时存在,是相同的。在 32 位的操作系统中,它的有效范围是 1.7E-308 到 1.7E+308。

3、字符串:string,无论是单一字符或数千字的字符串都是使用这个变量类型。要指定字符串给字符串变量,可以用单引号或双引号把字符串括起来,双引号支持特殊字符的转义,如\n换行、\r回车等。

4、数组:array,可以是二维、三维或者多维数组,其中的元素也很自由,可以是 string、integer 或者 double,甚至是 array。

5、类:object,目前在 PHP 中的类不多。

此外,还有布尔值 (boolean),值为true或false,浏览器输出时true为 1 ,false显示为空(什么也不显示)。

4、预定义变量

PHP 中的变量同样分为预定义变量和自定义变量。

PHP 提供了大量的预定义变量。这些预定义变量可以在 PHP 脚本中被调用,而不需要进行初始化。但需要注意这些预定义变量并不是不变的,它们随着所使用的Web服务器以及系统的不同而不同,包括不同版本的服务器。

预定义变量分为 3 个基本类型:与 Web 服务器相关变量、与系统相关的环境变量以及 PHP 自身预定义变量。具体的预定义变量用户可以利用 phpinfo()函数来查看自己系统下的支持的预定义变量,具体使用的时候必须考虑服务器对变量支持与否。下面是查看的脚本:

<?php 

phpinfo()

?>

5、自定义变量

PHP中自定义变量,是以$和其后面的变量名组成,变量名称的第1个字符必须是下划线或者字母,后面可以跟数字、 字母或者下划线。目前变量名称不能使用中文。变量的大小写是不一样的,开发 PHP 程序最好使用相同的变量使用风格,以免因为变量大小写出现问题。变量的类型由PHP根据上下文在运行时决定,使用之前无须声明。

以下为变量的使用范例:

<?php

$int1 =1234;//整型

$int2=-123;//整型负数

$float1 = 1.732; //浮点型

$float2 = 1.4E+2; //浮点型

$mystring = "字符串";

$MyArray1 = array("子", "丑", "寅", "卯");

Echo $int1.$int2;

Echo $float1.$float1;

Echo $mystring;

?>

PHP4以上变量的赋值有一种特殊方法,就是传递的赋值方法。这种方法把两个变量 关联起来,它们的值同时发生变化,改变一个变量的值也会影响另外一个,反之亦然。实际上就是两个变量同时指向一个存储地址。这种赋值方法的优点是加快了速度。但是只有在很长的循环或者赋很大的值时其优点才能体现出来。具体的赋值方法是在原来的变量前面加一个“&”号,请参看下面的例子:

<?php

$foo="Bob";//把字符串bob赋给$foo

$bar=&$foo;//把$foo 赋给$bar

$bar="My name is $bar";//改变$bar 的值

echo $foo;//$foo 也随之改变

echo $bar;

?>

上面的例子最后的显示结果会显示两次“My name is Bob”。 需要注意的是只有被命名的变量才能被赋给其他变量。

在变量之间,若要转换类型,在 PHP 程序中是很自由的,直接就拿来用了,不必经过特殊的转换函数。当然,浮点数转成整数就有点牵强了,不过可以将浮点数转成字符串,也是很好处理。 

6、变量的使用 

就像大部份的结构化程序,有所谓的全局变量与局部变量,PHP 在这方面也是有相同的处理方式。

如果在一个PHP脚本中声明一个变量,那么它可以应用于整个文件主要程序中,也可以应用于PHP脚本在 include 或 require 函数中所包含的文件,可以认为它是全局的。例如:

$a=1;

include “b.inc”;

由于$a 变量在 include()函数前面声明,所以在include()函数所包含的文件 b.inc 中也可以访问变量$a,且其值为 1。

但全局变量的有效范围仅限于主要程序中,不会影响到函数中同名的变量,也就是说在PHP脚本中的函数内部不能调用变量,全局变量与局部变量互不侵犯,这样可以避免用户不经意间改变全局变量的值。例如:

$a=1;//全局变量

function test(){

echo $a;//指的是函数内部的变量$a

test(); 

这段脚本不会显示出任何结果,因为函数内部并不能访问函数外声明的变量。若要变量能通透到函数中,就要在函数内用$GLOBALS 数组或是使用global声明。举例如下:

<?php

$a=1;

$b=2;

function sum(){

global $a,$b;

$b=$a+$b;}

sum();

echo $b;

?>

上面这段脚本使用global 定义,运行的结果显示“3”。因为在函数的开始使用 global 声明了变量$a和$b,使它们成为全局变量,所以函数内部同样是它们的作用范围,也就是说可以在函数内部访问它们。

下面用$GLOBALS 数组,可以达到相同的结果:

<?php

$a=1;

$b=2;

function sum(){

$GLOBALS["b"]=$GLOBALS["a"]+$GLOBALS["b"];

sum(); 

echo $b;

?>

上面的程序也会显示出“3”。它使用了$GLOBALS[“变量名”]的方法,这样变量就可以被认为是全局的。$GLOBALS 是一个关联数组。它以变量的名字 为关键字,以变量值为对应的值,使用起来也很方便。

7、静态变量

在函数中在变量,函数执行终了也就结束了,有时因为程序的需要,函数在循环中如果要延续函数变量使其不因函数结束而结束,我们就需要在函数中使用static定义为静态变量。例子如下:

<?php

// 静态变量的例子

function test(){

static $a=1;

$a++;

echo "<br>$a";

}

test(); 

test();

test();

?>

例子中的static $a=1 是表示声明变量$a为一个静态变量,并且给定初始值为 1,也就是$a 的值不会因为test()函数的执行终了而消失,所以在第2次执行 test()函数时,$a++会将$a 在上次 test()函数中最后的值加1,也就是2,同样地,第3次执行时,$a 的值变成了3。若将 static 的静态变量定义拿掉,就没办法累加了。

再看一个比较实际的例子,它处理表格的颜色,让隔行的颜色不同。

<?php

function TdBackColor() {

  static $ColorStr;

  if ($ColorStr=="808080") {

    $ColorStr="c0c0c0";

  } else {

    $ColorStr="808080";

  }

  return($ColorStr);

}

echo "<table border=1>\n";

for ($i=0; $i<10; $i++) {

  $ColorStr=TdBackColor();

  echo "<tr><td bgcolor=".$ColorStr.">这是第".$i."行</td></tr>\n";

}

echo "</table>";

?>

7、活动变量

PHP 的变量使用技巧上,最令人觉得不可思议的则是一个变量的变量名也是一个变量,这称为活动变量。请看下面例子:

<?php

$a = "Hello";

$$a = "world";

echo "$a,$Hello";   // Hello, world

echo "$a,{$a}";    // 也是 Hello, world

?>

例子中先把字符串“hello”赋给变量$a,然后利用变量$a的值,定义了一个新变量并为其赋值为“world”。$$a就是一个活动变量,输出时用{$a },此时输出“hello world”这个字符串。

PHP 在使用变量时,随时都可以使用新的变量,只要在使用前将变量初始化就好了,这当然有好处与坏处:好处是使用方便、自由,坏处就是常常因这些自由而付出相当大的代价调试。

8、外界 PHP 变量

外界PHP 变量指通过其他途径传递给 PHP 文件的变量,而不是在 PHP 文件中定义的变量。例如,HTML 表单元素的值可以通过外界PHP变量传递给 PHP 文件。当表单被提交给 PHP 脚本时,该表单中的所有变量都会自动转变为PHP可用的格式。例如下面的程序段,next.php 在执行时,系统会自动创建两个变量 $username 及 $sex,直接使用就好了。

<form action=next.php method=post>

姓名: <input type=text name="username"><br>

性别: <input type=text name="sex"><br>

<input type=submit>

</form>