由浅入深学习动态网页制作PHP的编程与应用

由浅入深学习动态网页制作PHP的编程与应用

表达式是PHP最重要的组成元素。在PHP3.0中,几乎你所写的任何东西都是表达式。表达式的最简单但精确的定义是"有一个值的任何东西"。

一个简单的例子是常量和变量。当你写"$a=5"时,你给$a赋了值‘5‘。(在这种情况下,‘5‘是一个整形常量)。在此,你是希望把$a赋值成5。所以写$b=$a时,你希望的结果就是$b=5。即$a是一个值为5的表达式。

复杂表达式的简单例子是函数。比如说,考虑以下函数:

function foo()

{

return5;

}

如果你认为写$c=foo()实际上和写$c=5是一样的,那么你是对的。函数是值为其返回值的表达式。因为foo()返回5,所以表达式‘foo()‘的值是5。

PHP的值当然不限于整形,且通常都不是。PHP支持三类值的类型:整形值,浮点值和字符串值。PHP支持两种混合类型(non-scalar):数组和对象。这两种类型的值可以赋给变量或从函数中返回。

PHP3是一种面向表达式的语言,所以几乎所有东西都是表达式。考虑我们已经讨论的例子,‘$a=5‘。很容易看出这里有两个值,整形常量‘5‘的值,和也被赋为5的变量$a的值。但是这里实际上还有一个附加的值,就是赋值语句本身的值。赋值语句本身的值就是被赋给的值,本例中是5.事实上,它意味着不考虑‘$a=5‘要做什么,它是一个值为5的表达式。这样,写诸如‘$b=($a=5)‘的语句,就象‘$a=5;$b=5;‘(每条语句末尾有一个分号)。因为赋值的顺序是从右向左的你也可以写成‘$b=$a=5‘。

表达式计算方向的另一个好例子是先加、后加及先减、后减。PHP/FI和多数其他语言的用户可能很熟悉variable++和variable。这是自加和自减操作。在PHP/FI2中,语句‘$a++‘没有值(它不是表达式),这样你就既不能赋值给它也不能通过任何办法使用它。PHP3把它们变成了和C中一样的表达式从而增强了自加和自减运算的能力。和C中类似,PHP3中也有两种类型的自加先加和后加。先加和后加的本质都是变量自加,对于变量本身的作用是一样的。不同点是自加表达式的值。形如‘++$variable‘的先加,计算变量自加后的值(PHP先做变量自加,再读取它的值,也就叫做‘先加‘).形如‘$variable++‘的后加,则先计算原始变量$variable的值,然后才进行自加(PHP在读取变量的值后再做自加,因此叫做‘后加‘).

最常见的表达式是比较表达式。这种表达式计算结果是0或1,分别意味着FALSE或是TRUE。PHP支持>(大于),>=(大于等于),==(等于),<(小于)及<=(小于等于)。这种表达式通常用在条件执行里,例如IF语句。

在这里我们最后要讨论的表达式是混合赋值表达式。你已经知道如果要使$a加一,你可以简单的写一句‘$a++‘或者‘++$a‘。但是如果要增加的值比1大怎么办呢,例如使它加3?你可以多写几次‘$a++‘,但这显然不是一种高效或令人乐于接受的办法。另外一个通常的办法是写‘$a=$a+3‘。先计算‘$a+3‘的值,在赋回到$a,这样$a就加上3了。在PHP3中,你可以象在其他几种语言(例如C)一样把它简写,这样更清晰、快洁易懂。把当前变量$a加3可以写成‘$a+=3‘。这句话的意思是"取出$a的值,把它加3,在赋给$a"。这除了使得语句简短、清晰,还使它执行的更快。表达式‘$a+=3‘的值,和一个严格的赋值语句一样,是所赋的值。注意:不是3,而是$a加3的值(这才是赋给$a的)。任何的双操作符可以被用于这种赋值操作模式,例如‘$a-=5‘(变量$a减去5),‘$b*=7‘(变量$b乘以7),等等。

最后值得提到的是表达式的真值。很多时候(主要是在条件执行和循环时),你并不关心表达式的特定值,而只是注意它代表TRUE还是FALSE(PHP没有专用的布尔类型)。PHP中使用类似perl的方法计算表达式的真值。任何非零的值为TRUE,零为FALSE。请一定注意负零的值是非零值,并被视为TRUE!空字符串可字符串"0"为FALSE;所其他的字符串为TRUE。对于非数量值(数组和对象)-如果它的值不含任何元素为FALSE,否则为TRUE。

第五章PHP语言结构

(一)、控制结构

1、IF语句

IF语句是多数语言中的一个重要特点,它根据条件执行程序段。PHP的IF语句类似于C:

if(expr)

statement

正如在表达式中所论述,expr被计算为它的真值。如果expr为TRUE,PHP执行相应语句,如果为FALSE则忽略它。

如果$a大于$b,下例将显示‘a is bigger than b‘:

if($a>$b)

print"a is bigger than b";

通常,你希望根据条件执行多于一条语句。当然,不需要给每条语句都加上IF判断。取而代之,可以把多条语句组成一个语句组。

If语句可以嵌套于其他IF语句中,使你能够灵活地有条件的执行程序的各个部分。

2、ELSE语句

通常你希望满足特定条件时执行一条语句,不满足条件是执行另一条语句。ELSE就是用来做这个的。ELSE扩展IF语句,在IF语句表达式为FALSE时执行另一条语句。例如,下面程序执行如果$a大于$b则显示‘a is bigger than b‘,否则显示‘a is NOT bigger than b‘:

if($a>$b){

print"a is bigger than b";

}

else{

print"a is NOT bigger than b";

}

3、ELSEIF语句

ELSEIF,就象名字所示,是IF和ELSE的组合,类似于ELSE,它扩展IF语句在IF表达式为FALSE时执行其他的语句。但与ELSE不同,它只在ELSEIF表达式也为TRUE时执行其他语句。

可以在一条IF语句中使用多条ELSEIF语句。第一个ELSEIF表达式为TRUE的语句将被执行。在PHP3中,你也可以写成‘else if‘(写成两个单词)和‘elseif‘(写成一个单词)效果一样。这只是写法上的细小差别(如果你熟悉C,它也是),结果是完全一样的。

ELSEIF语句仅在IF表达式和任何前面的ELSEIF表达式都为FALSE,且当前ELSEIF表达式为TRUE时执行。

下面是一个含有ELSEIF和ELSE的嵌套格式的IF语句:

if($a==5):

print"a equals5";

print"...";

elseif($a==6):

print"a equals6";

print"!!!";

else:

print"a is neither5nor6";

endif;

4、WHILE语句

WHILE循环是PHP3的一种简单的循环。象在C中一样。WHILE语句的基本格式是:

WHILE(expr)statement

WHILE语句的意思非常简单。它告诉PHP只要WHILE表达式为TRUE就重复执行嵌套的语句。每次循环开始时检查WHILE表达式的值,所以即使在嵌套语句内改变了它的值,本次执行也不会终止,而直到循环结束(每次PHP运行嵌套的语句称为一次循环)。类似于IF语句,你可以用大括号把一组语句括起来,在同一个WHILE循环中执行多条语句:

WHILE(expr):statement...ENDWHILE;

下面例子完全相同,都打出数字1到10:

/*example1*/

$i=1;

while($i<=10){

print$i++;/*the printed value would be$i before the increment(post-

increment)*/

}

/*example2*/

$i=1;

while($i<=10):

print$i;

$i++;

endwhile;