【 tulaoshi.com - PHP 】
第四章 程序控制
本章深入PHP内部,讲述如何使用函数、表达式和语句以实现对程序的控制。
前面的章节初步介绍了怎样操作数据,如果我们将操作数和操作符看作是构筑元件的话,那么它们组合起来即可形成表达式。进一步讲,表达式可以构成语句,语句用于组成函数,而函数则可用来组成程序。
提示:在学习有关编程语言的基本元素时,从全局理解--即理解这些元素是如何组成一个完整程序的--可能非常困难。但也不必着急,乐观一点。接下来的章节将逐步的显示整个程序,并且一点一点的解释它们是如何构造的。
4.1 表达式
当操作数和操作符组合到一起时,它们即组成表达式。本书的例子中已经展示了许多表达式,然而直到现在,我们才开始将注意力集中在它们身上。
表达式是由一个或多个操作符连接起来的操作数,用来计算出一个值--标量或数组。
最基本的表达式就是数字:
12
从这个简陋的开始,将逐步讨论越来越复杂的表达式:
-12
-12 + 14
-12 + 14 * (24 / 12)
(-12 + 14 * (24 / 12))&& calculate_total_cost()
注意每个表达式,在不考虑复杂性的情况下,每一个表达式事实上是由较小的表达式和一个或多个操作数共同组成的。当计算机编程者使用要定义的概念为该概念下定义时,这称为递归。当一个递归完成时,表达式能被分成较更简单的部分,直到计算机能完全的执行每一部分。
4.1.1 简单表达式
简单表达式是由一个单一的赋值符或一个单一函数调用组成的。由于这些表达式很简单,所以也没必要过多讨论。下面是一些例子:
* initialize_pricing_rules() -- 调用函数。
* $str_first_name = 'John' -- 初始化标量。
* $arr_first_names = array( 'John', 'Marie') -- 初始化数组。
4.1.2有副作用的简单表达式
表达式在它的主要任务之外,还有其它的副作用。当一个或几个变量改变了它们的值,并且这些改变并不是赋值操作符的操作结果时,就会出现这种副作用。例如,一个函数调用可以设置全局变量(全局变量是指在函数内部用global关键字来指定的变量),或者加一操作符也可以改变变量的值。副作用会使得程序很难读懂,因此编程的一个目标就是应该尽可能地减少这种副作用。
不使用global关键字是避免副作用的一个好选择。
让我们看看以下有副作用的表达式例子:
* $int_total_glasses = ++$int_number_of_glasses
-- $int_number_glasses变量在加一以后,再把值赋予$int_total_glasses。
* function one() {global $str_direction_name; $str_directory_name = '/dos_data'; }
-- 当one()函数调用后,全局变量的值将被改变。
4.1.3 复杂表达式
复杂表达式可以以任何顺序使用任意数量的数值、变量、操作符和函数。
尽可能使用简短的表达式,这意味着它们更容易维护。
以下是一些例子:
* ((10+2) /count_fishes() * 114)
-- 包含有三个操作符和一个函数调用的复杂表达式。
* initialize_count( 20 -($int_page_number -1) * 2)
-- 有一个复杂表达式参数的简单函数调用。
提示:有时很难分清左括号和右括号的数目是否相同。从左到右,当左括号出现时,就加一,当右括号出现时,就从总数中减一。如果在表达式的结尾时,总数为零时,左圆括号和右圆括号的数目就一定相同了。
4.2 语句
所有的PHP程序都是由语句构成的,无论是简单的语句,还是复杂的语句,这些语句按顺序执行每一时刻执行一句,直到遇到程序结束、跳转语句、分支语句。
最基本的语句是:
;
此语句什么也没有做,但它仍是合法的。分号符是语句结束的标志。如果需要,语句也可以相当复杂。例如:
$str_house_size =(
$int_number_of_rooms > 9 ?
"large" :
"small"
);
这行代码在房子的数目大于9时,给$str_ho