PHP控制语句

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

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

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

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

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

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

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

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

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

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

  DO..WHILE非常类似于WHILE循环,只是它在每次循环结束时检查表达式是否为真,而不是在循环开始时。它和严格的WHILE循环的主要区别是DO..WHILE的第一次循环肯定要执行(真值表达式仅在循环结束时间检查),而不必执行严格的WHILE循环(每次循环开始时就检查真值表达式,如果在开始时就为FALSE,循环会立即终止执行).

  上面循环只执行一次,因为第一次循环后,当检查真值表达式时,它算出来是FALSE($i不大于0)循环执行终止。

  每一次循环,表达式expr2都被计算。如果结果为TRUE,则循环和嵌套的语句继续执行。如果结果为FALSE,则整个循环结束。

  每次循环结束时,expr3被计算(执行).每一个表达式都可为空。expr2为空则循环的次数不定(PHP默认它为TRUE,象C一样)。除非你要通过一个条件的BREAK语句代替FOR的真值表达式来结束循环,否则不要这样。

  当然,第一个例子显然是最好的,但借此你可以发现在FOR循环中很多场合可以使用空的表达式。

  其他的语言有一条foreach语句用来遍历一个数组或哈希(hash)表。PHP使用while语句和list()、each()函数来达到这个功能。

  SWITCH语句就象是对同一个表达式的一系列IF语句。在很多时侯,你想把同一个变量(或者表达式)和许多不同的值去比较,并根据不同的比较结果执行不同的程序段。这就是SWITCH语句的用处了。

  下面两个例子通过不同的方法做同一件事,一个用一组IF语句,另外一个用SWITCH语句:

  REQUIRE语句用指定的文件代替自己,很象C中的预处理#include。

  这意味着你不能为了每次调用该函数来包含不同文件的内容,而把require()语句放在一个循环结构,。要这么做,使用INCLUDE语句。

  每次遇到INCLUDE是INCLUDE语句就包含指定的文件。所以你可以在一个循环结构中使用INCLUDE语句以包含一系列不同的文件。

  函数可以通过可选的return语句返回值。返回值可以是任何类型,包括列表和对象。

  外部信息可以通过参数表来传入函数中;参数表就是一系列逗号分隔的变量和/或常量。

  PHP3支持通过值形参数(默认),变量参数,和默认参数。不支持变长参数表,但可以用传送数组的方法来实现。

  默认情况函数参数是传值方式。如果你允许函数修改传入参数的值,你可以使用变量参数。

  如果你希望函数的一个形式参数始终是变量参数,你可以在函数定义时给该形式参数加(&)前缀:

  如果要传递一个可变参数给默认的函数(其形式参数不是变参方式),你可以在调用函数时给实际参数加(&)前缀:

  注意,当使用默认参数时,所有有默认值的参数应在无默认值的参数的后边定义;否则,将不会按所想的那样工作。

  上面定义了一个叫Cart的类,其中包括一个关联数组和两个用来从cart中增加和删除项目的函数。

  这建立起一个Cart类的对象$cart。该对象的函数add_item()被调用来给第10项加1。

  类可以从其他的类扩充得到。扩充或派生出来的类拥有基类的所有变量和函数及你在扩充定义中所定义的东西。这要使用extends关键字。

  这里定义了一个名为Named_Cart的类它继承了Cart类所有变量和函数并增加了一个变量$owner和一个函数set_owner()。你建立的named_cart类的变量现在就能设置carts的owner了。在named_cart变量中你仍然可以使用一般的cart函数:

  函数中的变量$this意思是当前的对象。你需要使用$this-something的形式来存取所有当前对象的变量或函数。

  类中的构造器是你建立某种类的新变量时自动被调用的函数。类中和类名一样的函数就是构造器。

  这里定义一个类Auto_Cart,它给Cart类加了一个每次new操作时设置项目10进行变量初始化的构造器。构造器也可以有参数,这些参数是可选的,这种特点也使得其十分有用。

相关阅读