第 3章 CGI概念和 PHP程序设计基础 80- 1
第 12讲 网页设计与编程 (三 )
CGI概念和 PHP程序设计基础
第 3章 CGI概念和 PHP程序设计基础 80- 2
第 12讲 本讲目标
? 了解和掌握 CGI的基本概念和程序处理过程;
? 理解 PHP程序设计的基本要素
? PHP基本元素
? PHP程序流程控制
? PHP函数
第 3章 CGI概念和 PHP程序设计基础 80- 3
什么是 CGI?
? Web之所以成为电子商务 /电子政务平台,一个重
要的原因是它的交互性 (数据的双向交流 );
? 在遍布世界的 Web网站中,为实现对网站数据的
有效管理,普遍采用了数据库技术;
? 对于使用 HTML网页,用户可以通过表单将数据
发送到 Web服务器,但是 HTML无法将数据存取
服务器的系统数据库;
? 这就需要在 HTML网页与数据库之间架设一个沟
通的渠道,这就是,通用网关接口( Common
Gateway Interface,CGI)”;
第 3章 CGI概念和 PHP程序设计基础 80- 4
什么是 CGI?
? 所谓 CGI实际上是一种脚本语言( scripting
language),它的功能很多,
? 审核用户从表单或 HTTP请求的 URL地址栏发来的
数据;
? 将数据存入数据库;
? 应用户请求从数据库取出数据并通过动态网页
( dynamic page)发给浏览器;
? 检查 Web服务器状态并发给浏览器用户一张“快照
( snapshot)”。
第 3章 CGI概念和 PHP程序设计基础 80- 5
什么是 CGI?
? 建立 CGI动态网页机制时,必须首先由用户从
HTML网页向服务器发送数据。
? 该数据被 CGI程序处理并产生新的 HTML网页。
? 在此过程中,用户数据须通过诸多传递环节。
? 调用 CGI应用程序的 HTML文档直接影响信息
向 CGI程序传递的方式。
? 该过程是如何进行的?浏览器上的数据怎样才
能到达 CGI应用程序呢,其数据传递机制又是
如何决定的?
第 3章 CGI概念和 PHP程序设计基础 80- 6
什么是 CGI?
? CGI程序从 3个来源取得数据:
? 浏览器用户
? 触发 CGI应用程序的 HTML网页
? Web服务器
? 所有传递到 CGI程序的数据都经由 Web服务器。
? Web服务器与 CGI程序的数据交换一般通过特
定的环境变量进行。这种环境变量通常对所有
类型的网关程序来说都是可使用的。
第 3章 CGI概念和 PHP程序设计基础 80- 7
什么是 CGI?
? 浏览器( HTTP client)将用户在 HTML网页中
输入的数据进行转换后发给 Web服务器
? 服务器依次按预先定义好的 CGI协议将数据发
给网关程序
? 这两种变量类型的数据都以属性/值的形式成
对传送(例如,color=“red” )。
第 3章 CGI概念和 PHP程序设计基础 80- 8
因 特 网
B r o w s e r
C G I
应 用 程 序
W e b S e r v e r
S h e l l 程 序
c g i _ a p p a r g 1 a r g 2
环 境 变 量
( P A T H _ I N F O,Q U E R Y _ S T R I N G
C O N T E N T _ L E N N T H,e t c )
标 准 输 入
a = a p p l e & b = b o y & c = c r a y o n
C G I 提 供 的 三 种 数 据 传 递 机 制
第 3章 CGI概念和 PHP程序设计基础 80- 9
什么是 CGI?
? 实际上,可以把 CGI看成是一个通过浏览器实
现的一个类似操作系统中 Shell[1]。
?
[1]如 DOS中的 COMMAND.COM。
第 3章 CGI概念和 PHP程序设计基础 80- 10
什么是 CGI?
? Shell
? 标准输入 键盘
? 标准输出 屏幕
? 功能选择 命令
? 功能调节 参数
? 提示提示 c:\>
?CGI
–标准输入 表单; URL地址栏
–标准输出 网络;浏览器
–功能选择 输入网页 URL;超链
–功能调节 输入网页 URL和参数
–命令提示 超链;地址栏
第 3章 CGI概念和 PHP程序设计基础 80- 11
PHP程序样例
<html>
<head>
<title>The First Greeting from PHP </title>
</head>
<body>
<?
echo "hello,$name\n";
>
</body>
</html>
第 3章 CGI概念和 PHP程序设计基础 80- 12
PHP的程序的执行过程
? 这 10行程序在 PHP中不需经过编译等复杂的过
程,只要将它放在可执行 PHP程序的环境中,
并将它存成文件 greeting.php即可。打开浏览
器,在地址栏中输入 [1]:
http://127.0.0.1/greeting.php?name=Cheng
? [1] 若未加说明,本课程所含的实验或例子假设在本地主机上的
Web服务器 Xitami上运行。 Xitami的网页发布目录在
c:\xitami\webpages。
第 3章 CGI概念和 PHP程序设计基础 80- 13
PHP程序的执行结果
图3 - 2 一个简单的P H P 示例程序的浏览器输出
第 3章 CGI概念和 PHP程序设计基础 80- 14
PHP程序发给浏览器的源代码
<html>
<head>
<title>The First Greeting from PHP </title>
</head>
<body>
hello,Cheng
</body>
</html>
第 3章 CGI概念和 PHP程序设计基础 80- 15
PHP与, 纯, HTML网页的不同
? PHP网页除了需要 Web服务器和浏览器的参与外,还需
要经过 CGI模块处理才能显示(本例中用的是 PHP.exe) ;
? PHP网页的程序参数(或变量)至少可以从 URL地址栏附
在网页的 URL一起输入;
? PHP网页的输出可以随程序参数(或变量)值变化而变化。
? 在本例网页的访问过程中,在
http://127.0.0.1/greeting.php网址之后附带了
,?name=Cheng”,该示例使用了一个输入数据项。
? 等号,=” 左边的称为“参数”,,=”右边的是参数值
? 当需要输入的数据项多于一项时,数据项之间要用,&”号隔开
第 3章 CGI概念和 PHP程序设计基础 80- 16
将 PHP程序嵌入网页的方法
1,<?Echo("这是第一个 PHP语言的嵌入例子 \n");?>
2,<?php echo("这是第二个 PHP语言的嵌入例子
\n");?>
3,<script language="php">
echo("这是第三个 PHP语言的嵌入例子,它类似
JavaScript及 VBScript语法的 PHP语言嵌入 ");
</script>
4,<% echo("这是类似 ASP嵌人语法的 PHP例子 ");
%>
第 3章 CGI概念和 PHP程序设计基础 80- 17
PHP中的引用文件
? 将常用的功能写成一个函数,预先存放在文件
中,然后在编制含有 PHP程序的网页中引用相
应的文件,就可以调用适用的函数了,这样既
可加强代码的灵活性和可读性,也有利于代码
重用。
? 引用文件的方法有两种,require()函数及
include()函数
第 3章 CGI概念和 PHP程序设计基础 80- 18
PHP中的引用文件
? require()的使用方法,如
,require(”MyRequireFile.php“);”。该函数一般放
在 PHP程序的最前面,PHP程序在执行前,就会先读
入 require语句所指定引入的文件,使它变成 PHP网
页的一部分。用此方法可将常用的函数引入网页中。
? include()的使用方法,如
,include("MyIncludeFile.php");”。该函数一般
放在流程控制的处理区域中。 PHP程序网页在读到
include语句时,才将相关的文件读进来。这种方法,
可以把程序执行时的流程处理程序简单化,增强程序
的可读性。
第 3章 CGI概念和 PHP程序设计基础 80- 19
PHP程序的注释风格
<?
Echo "这是第一种方法的例子。 \n"; //本例是
C++的注释风格
/*本例采用多行的注释方式 */
echo "这是第二种方法的例子。 \n";
echo "这是第三种方法的例子。 \n"; #本例使用
UNIX Shell注释风格
>
第 3章 CGI概念和 PHP程序设计基础 80- 20
PHP的常量、变量和数据类型
? PHP是一种弱类型的程序语言,也就是说一个
变量可以存储任意类型的数据,使用变量之前
无须声明变量是字符型还是整型。 (与 C语言
有本质区别)
第 3章 CGI概念和 PHP程序设计基础 80- 21
数据类型
? PHP的基本数据类型:
? 整数( integer):十六进制数需要 0x前缀
? 双精度浮点数( double)
? 字符串( string), 1~ n个字符
第 3章 CGI概念和 PHP程序设计基础 80- 22
数据类型
? 给字符串变量赋值,要在该字符串首尾加上双引号
(例如,,这是字符串” )。
? 在字符串插入控制符时,须使用转义字符,也就是
斜线加上指定的符号,例如:
\“=双引号 \\=斜线
\n=换行 \r=回车 (CR) \t=制表 (TAB)
第 3章 CGI概念和 PHP程序设计基础 80- 23
数据类型
? 数据类型中,PHP还有两种复合的数据类型,即
数组 (array)和对象 /资源( object/resource)。
? 数组类型,可以是二维、三维或者多维数组,数组
元素可以是整数、字符串或者浮点数,甚至是数组。
? 对象 /资源类型可以存储变量信息和函数。
第 3章 CGI概念和 PHP程序设计基础 80- 24
PHP的内置环境变量和常量
? _FILE_,执行中的 PHP程序文件名
? _LINE_,执行中 PHP程序行数
? PHP_VISION,PHP程序的版本
? PHP_OS,执行 PHP的操作系统名称
? TRUE,真值
? FALSE,假值
? E_ERROR,指向最近的错误处
第 3章 CGI概念和 PHP程序设计基础 80- 25
PHP的内置环境变量和常量
? 所有以 E_开头形式的常量,可以参考
error_reporting()函数
? 当然在程序编写时,以上的内定内置环境变量
和常量是不够用的。 define()函数可以自定义
所需要的常量
第 3章 CGI概念和 PHP程序设计基础 80- 26
PHP的内置环境变量和常量
? 一个定义常量的例子
<?
define("PI","3.14");
echo PI; //送出值 3.14;
>
第 3章 CGI概念和 PHP程序设计基础 80- 27
PHP变量
? PHP有 3种类型的变量 [1]:
? 标量:一次保存一个特定数字或字符串,即基本数
据类型中的任意一种。
? 数组:存储数值的列表。
? 对象:存储变量信息和函数。
[1] 注意:在 PHP中的变量名是区分大小写的。也就是说
$scl_varname,$Scl_varname,$Scl_Varname、
$SCL_VARNAME代表不同的变量。
第 3章 CGI概念和 PHP程序设计基础 80- 28
PHP变量
? 标量 [1]
? 标量用来记录单个信息。例如,学生的名字或购物的数量。
? 由于标量在 PHP编程中较为常用,在不致引起误解的情况下,
一般意义上的变量也就是这里所指的标量。下面是一些变量
的名字及含义:
$int_page_number:存储当前页码。
$str_text_title:存储文章的标题。
$0:无效的变量名。因为变量名不能以数字字符开始。
? [1] 在 PHP编程中,永远不必预先声明简单变量。定义或分配简单的数
据类型 (标量或数组 ),第一次使用变量名就相当于定义它。
第 3章 CGI概念和 PHP程序设计基础 80- 29
PHP变量
? 使用代码给变量赋值。
<?
$int_student_number=64;
$str_text_title=“Welcome to PHP land.”;
$int_student_number=64;
$int_student_number=64+1;
>
第 3章 CGI概念和 PHP程序设计基础 80- 30
PHP变量
? 数组变量
? 一个数组就是把一系列数字或字符串作为一个存
储单元来处理。数组中的每一个信息都被认为是
数组的一个元素。例如,可以用数组存储一个文
件中的所有行或者存储一个地址列表。
第 3章 CGI概念和 PHP程序设计基础 80- 31
数组的赋值
$arr_animal['panda']='a rare animal in China.';
$arr_ainmal['dog']='an animal in people's home.';
$arr_ainmal ['camel']='Four-legged animal.';
#也可以用下面的方法同时对多个元素赋值:
$arr_animal=array(
'panda'=>'a rare animal in China.'
,'dog'=>'an animal in people's home.'
,'camel'=>'Four legged animal.');
#请注意 PHP数组结构与其他程序语言的差别
第 3章 CGI概念和 PHP程序设计基础 80- 32
数组的赋值
$arr_names[]='Jack';
$arr_names[]='Tom';
$arr_names[]=?Jane?;
? #以上代码给 $arr_names数组增加了 3个元素,
这 3个元素的下标分别为 0,1和 2(前提是该数
组没有其他元素存在 )
第 3章 CGI概念和 PHP程序设计基础 80- 33
数组元素的应用
? 获取这些数组元素的值
$key='panda';
$value=$arr_animal[$key];
#这两行代码运行以后,$value的值变为‘ a rare
animal in China.?。
$value=$arr_animal[?panda?];
#用于数组下标的字符值始终须用单引号括起来,且
数组下标中不应该有空格。
第 3章 CGI概念和 PHP程序设计基础 80- 34
数组元素的应用
? 用于数组下标的字符值始终应用单引号括起来,
但是为什么 $arr_animal[panda] 错了呢?可
能在老的脚本中见过如下语法:
$foo[bar] = 'enemy';
echo $foo[bar];// etc
? 这样是错的,但可以起作用。那么为什么错了呢?
原因是此代码中有一个未定义的常量( bar)而不
是字符串( 'bar'),而 PHP 可能会在以后定义此
常量,不幸的是代码中有同样的名字。
第 3章 CGI概念和 PHP程序设计基础 80- 35
数组元素的应用
$arr_mixed=array(2,54,?Jack?=>'the first
name','application');
# arr_mixed数组的数组下标分别是 0、
1、’ Jack?和 2。如果数组下标没有给定,
PHP就自动提供一个。默认的数组下标是以 0
开始的,以后当数组下标没有赋值时默认值每
次加一。
第 3章 CGI概念和 PHP程序设计基础 80- 36
多维数组
? 假如既要存储书的总页数,又要存储出版商的
名字。这需要使用两个列表:
lst_number_of_pages和
lst_publisher_names,但在需要增加或修改
信息的时候,就很不方便了。并且在保证两个
列表的同步上也留下了隐患。
? 多维数组提供了一个极灵活的数据结构,每一
个数组元素均可以包含另外一个数组。
第 3章 CGI概念和 PHP程序设计基础 80- 37
多维数组
? 多维数组的初始化
$arr_books=array(
'0-679-7681-9?=>array('name'=>'The New
History','pages'=>400
,?publisher?=>?Vintage Books')
'0-512-85585-5?=>array('name'=>'Children of the
Mind','pages'=>549
,?publisher?=>?Tor Books')
);
第 3章 CGI概念和 PHP程序设计基础 80- 38
多维数组
? 上例使用了每本书的 ISBN号作为检索数组
$arr_books的多维数组下标,且每本书都有
它自己的子数组,用以描述其自己的特定信息。
为了查询子数组中的信息,数组下标由一个扩
展为两个,例如:要查询 The New History一
书的页数有多少,可以使用以下的表达式:
$arr_books[?0-51-85595-5?][?pages?]
第 3章 CGI概念和 PHP程序设计基础 80- 39
多维数组
? 用户会发现多维数组十分灵活方便。毫不夸张
他说,几乎每一个稍微复杂的程序中都可能使
用多维数组。
? 多维数组随时都可以加入需要的元素。假如在
程序运行过程中,觉得应该将作者名也存进去
的话,那么只需在多维数组中加入如下信息即
可:
$arr_books[?0-512-85595-5?][?author?]='Orson Scott
Card';
第 3章 CGI概念和 PHP程序设计基础 80- 40
多维数组
? 注意 PHP数组结构允许在一个子数组中加入一项内容,
而不会影响其他数据。当开始使用 PHP从多个数据库
表中收集信息时,多维数组能用来组合这些信息。
? 例如,当使用一个涉及到多个产品供应商的产品数据
库时,可以从第一个产品供应商开始将相关信息存入
多维数组中。然后,再读取第二个产品供应商的信息
(信息数据的组织形式与第一个可能不同),并将这
些新信息写入同一个多维数组中。读取所有产品供应
商的信息,并全部写入多维数组以后,该多维数组就
包含了所有的产品信息。
第 3章 CGI概念和 PHP程序设计基础 80- 41
变量替换
$strsize='big';
echo,Jack was a $strsize man.”;
将显示为:
Jack was a big man
注意:这样的字符串必须使用双引号。
第 3章 CGI概念和 PHP程序设计基础 80- 42
变量替换
$strsize='big';
echo "Jack was a $strsizeger man."
以上程序段存在问题,PHP无法识别,必须
改成:
$strsize='big';
echo "Jack was a ${strsize}ger man."
第 3章 CGI概念和 PHP程序设计基础 80- 43
动态变量名
//store the name of dynamic variable.
$scl_dynamic='strname';
//assign a value to the dynamic variable.
$$scl_dynamic ='John';
echo "\$strname=$strname\n";
此程序将显示:
$strname=John
第 3章 CGI概念和 PHP程序设计基础 80- 44
PHP运算符
PHP中的运算符与 C语言中的相似,它包括:
? 算术运算符
? 字符串运算符号
? 赋值运算符号
? 位元运算符
? 逻辑运算符
? 其他一些运算符
第 3章 CGI概念和 PHP程序设计基础 80- 45
算术运算符
<?
$a=12;
$b=5;
$c=7;
echo $a+$b."<br>\n";
echo $a-$b."<br>\n";
echo $a*Sb."<br>\n";
echo $a/$b."<br>\n";
echo $a%$c.“<br>\n”; //取余数
$a++;
echo $a."<br>\n";
$c--;
echo $c;
>
第 3章 CGI概念和 PHP程序设计基础 80- 46
字符串的连接符
<?
$a="PHP 4.0程序设计及实例教程 ";
$b="值得您购买 ";
echo $a":".$b;
>
? PHP的字符串运算 (String Operator)的符号只
有一个,就是英文的句号 (.)。它可以将字符串
连接起来,合并成新的字符串
第 3章 CGI概念和 PHP程序设计基础 80- 47
赋值运算符
? PHP赋值运算 (Assignment operator) 有时会
让人很感迷惑,但它却可以让程序更简洁、高
效。
<?
$a=7;
$a+=5; //即 $a=$a+5
echo $a."<br>\n";
$b="我 ";
$b.="在,//$b="我在 "
echo "$b<br>\n";
>
第 3章 CGI概念和 PHP程序设计基础 80- 48
逻辑运算符
? 逻辑运算 (Logical Operators)用来判断表达式的真
假,常用于条件语句的执行,以及循环语句的开始
或结束。
? PHP逻辑运算符的意义比较简单,具有 C语言基础
的都能理解,需要注意的是,虽然,&&”运算符和
and运算符的意义相同,但它们的优先级不同,
,&&”的优先级要高于 and。在同样条件下,先进
行,&&?运算,再进行 and运算。,||”和 or也一样
? 在 PHP中,数值 0表示逻辑值为假 (False),非 0的任
何一个数都表示逻辑值为真 (true)。例如,2,51等
都表示真值。
第 3章 CGI概念和 PHP程序设计基础 80- 49
特殊的运算符
? $int_a表示一个标量,而 int_a没有任何意义,
,&$int_a”表示内存中实际储存标量 $int_a的
地址。
? @运算符加在函数前,则不会显示错误信息,
不过这不能解决实际问题,要想解决问题,还
要用到 if语句。
第 3章 CGI概念和 PHP程序设计基础 80- 50
特殊的运算符
?,->”用来表示一个类的方法或属性,例如:
form_lable表示一个类,即表单里的一个标签,
用,form_lable->init”可表示它的一个方法,
即初始化,用,form_lable->height”可表示
它的一个属性,即该标签的高度。
?, =>”用来表示数组的元素。
?,?:”为三元操作符,其语法为:
(expr1)?(expr2),(expr3);
第 3章 CGI概念和 PHP程序设计基础 80- 51
特殊的运算符
? 三元操作符应用举例:
<?
$int_a=5;
$int_b=4;
$int_c=($int_a>$int_b)?$int_a:$int_b;
echo "$int_c<br>";
>
第 3章 CGI概念和 PHP程序设计基础 80- 52
PHP程序的流程控制
? 流程控制对任何编程语言都是很重要的,对
PHP来说当然也不例外。程序设计语言有 3种
基本的流程结构:
? 顺序
? 分支
? 循环
第 3章 CGI概念和 PHP程序设计基础 80- 53
一般分支结构
? if语句
if语句的结构为:
if (expression)
statement
其中 expression为逻辑表达式,当 expression值为真或为
非零时执行 statement语句。如:
If ($a<$b)
print "$a小于 $b";
第 3章 CGI概念和 PHP程序设计基础 80- 54
一般分支结构
? else语句
当在 expression的值为假时,需要执行
一些语句,那么就用下面的格式:
if( expression)
{ statement1}
else{ statement2}
此句的意思是当 expression的值为真时执行
statement1,为假时执行 statement2
第 3章 CGI概念和 PHP程序设计基础 80- 55
一般分支结构
? elseif语句
? 如果在 expression为假时,还有不止一种可
能,那么程序必须在 expression为假时继续
作出判断,这时就要用到 elseif语句。
第 3章 CGI概念和 PHP程序设计基础 80- 56
一般分支结构
? elseif结构为:
if(expression0)
{statenlentl //当 expression0为真或非零
}
elseif(expression1)
{ statement2 //当 expression0为假,但 expression1为真
}
[elseif(expression2)
{ statement5 //当 expression0和 expression1都为假,但
expression2为真
}]
[else
{ statement3 //当 expression0和 expression1都为假
}]
第 3章 CGI概念和 PHP程序设计基础 80- 57
一般分支结构
? if … endif 语句
在 PHP中还可以使用下列格式的 if … endif 语句:
if(expression):
statement
endif
来代替以下格式的 if 条件语句:
if(expression)
{
statement
}
第 3章 CGI概念和 PHP程序设计基础 80- 58
一般分支结构
? PHP语句和 HTML嵌套的书写风格举例
<?if($a!=5):?>
<input type='text' name='textfield' value=''>
…
<?endif;?>
这样将提高程序的可读性,也减少了程序出错的机会。
第 3章 CGI概念和 PHP程序设计基础 80- 59
循环结构
? while语句
在程序编写过程中,while语句也是常用到的。
PHP 4.0中的 while语句也和其他编程语言差
不多,其格式为:
while(expression)
{statement
}
当 expression结果为真 (True)或值不为零时
将循环执行 statement,直到 expression结
果为假,跳出循环。
第 3章 CGI概念和 PHP程序设计基础 80- 60
循环结构
? while语句还有一种形式是 PHP中特有的,其
格式为:
while(expression):
statement
endwhile
<?
$a=1
while($a<10):
print $a;
$a++;
endwhile;
>
第 3章 CGI概念和 PHP程序设计基础 80- 61
循环结构
? 和 C语言类似,PHP中也有 do while语句,其
格式为:
do
{statement
}
while(expression)
当 expression为真值或非零值时将循环执
行 statement,直到 expression为假,跳出循
环。
第 3章 CGI概念和 PHP程序设计基础 80- 62
while和 do,,while
? while循环语句先判断条件( expression)然
后再决定是否执行循环体,所以有可能循环体
( statement)一次也不能执行
? do while语句先执行循环体( statement)再
判断条件( expression)。所以无论
expression为真或为假,statement至少能执
行一次。
第 3章 CGI概念和 PHP程序设计基础 80- 63
for循环语句
PHP的 for循环语句格式非常灵活,同样
的循环语句可以用好几种不同的格式来写,
与 C语言“几乎”一样。
? PHP中 for语句最常见的格式为:
for(expression1;expression2;expression3)
{statement
}
第 3章 CGI概念和 PHP程序设计基础 80- 64
for循环语句
for ($a=0;$a<10;$a++)
print $a;
$a=0;
for(;$a<10;$a++)
print $a;
$a=0;
for(;$a<10;):
print $a;
$a++;
endfor;
第 3章 CGI概念和 PHP程序设计基础 80- 65
for循环语句
? PHP中特有的格式 (C语言中没有 )
for(expression1;expression2;expression3):
statement
endfor;
for语句首先执行初始化语句 expression1,再
判断条件 expression2,如果 expression2为真值
或非零值时将执行 statement,然后执行
expression3,此时第一个循环已经执行完毕,再
接着执行第二个循环,判断 expression2,执行
statement,expression3,直到 expression2为假,
跳出循环。
第 3章 CGI概念和 PHP程序设计基础 80- 66
for循环语句
? 所以 for语句可以看成是:
for(循环变量初始化语句;判断条件;循环变
量变化语句 )
{循环体
}
第 3章 CGI概念和 PHP程序设计基础 80- 67
break和 continue语句
? break语句的作用是跳出整个循环。
? continue标记的作用是跳出当前循环,即跳过
当前循环中剩下的还未执行的语句,再接着执
行下一次循环。
第 3章 CGI概念和 PHP程序设计基础 80- 68
break和 continue语句
? break语句示例
<?
$a=();
while($a<10)
{if($myarray[$a]="stop")
break;
…
$a++;
}
>
? Continue语句示例
<?
$a=0;
while($a<10)
{statement1;
$a++;
if($a%2)
continue;
statement2;
}
>
第 3章 CGI概念和 PHP程序设计基础 80- 69
switch语句
switch(expression)
{case expr1:
statement1;
case expr2:
statement2;
case expr3:
statement3;
default:
statement;
}
第 3章 CGI概念和 PHP程序设计基础 80- 70
switch语句
? 如果只需要判断 $a的范围是否在 0~ 2之间,那么
用 switch语句写为:
switch($a)
{case 0:
case 1:
case 2:
print "$a在 0和 2之间 ";
break;
default:
print "$a不在 0和 2之间 ";
}
第 3章 CGI概念和 PHP程序设计基础 80- 71
函数
? 函数可以帮助程序员组织自己的代码,实现一
定的功能,使程序设计模块化,让代码结构清
晰易懂。
? 例如,在程序中已经包含了一个计算圆面积的
函数 area_circle(),在调用时可以用以下代码:
$int_area=area_circle(10);
第 3章 CGI概念和 PHP程序设计基础 80- 72
函数
? PHP函数可分为两类:有返回值的函数和无
返回值的函数,相当于 Pascal中的函数
(function)和过程 (procedure)。两者的区别
在于函数定义过程中是否有 return语句。
第 3章 CGI概念和 PHP程序设计基础 80- 73
函数
? PHP函数的定义,函数的定义语法为:
function函数名 (参数列表 )
{
函数功能 ;
}
第 3章 CGI概念和 PHP程序设计基础 80- 74
函数
? 求圆面积函数定义
<?
function area_circle($int_radius)
{
$int_area=3.1415*$int_radius*$int_radius;
return($int_area);
}
echo "The area of circle is area_circle(5)";
>
? 输出结果如下:
The area of circle is 786.5755
第 3章 CGI概念和 PHP程序设计基础 80- 75
函数
? PHP函数的返回值可以是一个值,也可以是一个数组,
例如以下定义的函数就返回一个数组:
<?
function array_list()
{
return array(10,20,30,40,50);
}
>
? 利用赋值语句,$arr_temp=array_list();就得到一个
表示数组的变量 $arr_temp,它的各个元素分别为:
10,20,30,40,50
第 3章 CGI概念和 PHP程序设计基础 80- 76
函数
? 可以利用 list方法直接得到返回的数组的元素,
<?
list($a,$b)=array_list();
echo "$a<br>";
echo“$b<br>";
>
输出结果为:
10
20
第 3章 CGI概念和 PHP程序设计基础 80- 77
向函数传递参数
? 向函数传参有“按值传递”和“按址传递”两种方式
函数的按值调用
<?
function add($value)
{
$value++;
}
$int_a=2;
add($int_a);
echo "$int_a<br>";
>
函数的按址调用
<?
function add(&$value)
{
$value++;
}
$int_a=2;
add($int_a);
echo "$int_a<br>";
>
第 3章 CGI概念和 PHP程序设计基础 80- 78
向函数传递参数
? 注意,应用地址传递的方式将会改变某些参数
的值,在团队开发环境下,如果合作的程序员
之间仅简单地使用函数,而对函数具体操作不
了解,这种方式很容易造成紊乱。因不清楚某
些变量 (特别是全局变量 )什么时候会发生改变,
所以不利于变量的共享,因此在使用这种方法
的时候一定要慎重。
第 3章 CGI概念和 PHP程序设计基础 80- 79
给函数赋默认值
? PHP中允许函数在定义时为一些或全部参数
赋予默认值,也就是说,实际调用时,可以
传递给函数某些参数,也可以不传递,如果
不传递参数,参数值就用默认值;如果传递
参数,参数值就用传递的值。
第 3章 CGI概念和 PHP程序设计基础 80- 80
给函数赋默认值
<?
Function self_font($text;$color="red";$size=6){
echo "<font size=\"$size\" color=\"$color\">$text</a>"
}
>
<? self_font('I am a student!');?><br>
<? selt_font('I am a student!','green');?>
<br>
<? Self_font('I am a student!','green',4);?>
<br>
>
? 这段代码将输出 3行,I am a student。但是第一行颜
色为 red,字体大小为 6。第二行颜色为 green,字体
大小为 6。第三行颜色为 green,字体大小为 4。
第 3章 CGI概念和 PHP程序设计基础 80- 81
本章小结
? 了解和掌握 CGI的基本概念和程序处理过程;
? 理解 PHP程序设计的基本要素
? PHP基本元素
? PHP程序流程控制
? PHP函数
? 掌握 PHP工作环境的安装和 PHP程序调试技术
等。
第 12讲 网页设计与编程 (三 )
CGI概念和 PHP程序设计基础
第 3章 CGI概念和 PHP程序设计基础 80- 2
第 12讲 本讲目标
? 了解和掌握 CGI的基本概念和程序处理过程;
? 理解 PHP程序设计的基本要素
? PHP基本元素
? PHP程序流程控制
? PHP函数
第 3章 CGI概念和 PHP程序设计基础 80- 3
什么是 CGI?
? Web之所以成为电子商务 /电子政务平台,一个重
要的原因是它的交互性 (数据的双向交流 );
? 在遍布世界的 Web网站中,为实现对网站数据的
有效管理,普遍采用了数据库技术;
? 对于使用 HTML网页,用户可以通过表单将数据
发送到 Web服务器,但是 HTML无法将数据存取
服务器的系统数据库;
? 这就需要在 HTML网页与数据库之间架设一个沟
通的渠道,这就是,通用网关接口( Common
Gateway Interface,CGI)”;
第 3章 CGI概念和 PHP程序设计基础 80- 4
什么是 CGI?
? 所谓 CGI实际上是一种脚本语言( scripting
language),它的功能很多,
? 审核用户从表单或 HTTP请求的 URL地址栏发来的
数据;
? 将数据存入数据库;
? 应用户请求从数据库取出数据并通过动态网页
( dynamic page)发给浏览器;
? 检查 Web服务器状态并发给浏览器用户一张“快照
( snapshot)”。
第 3章 CGI概念和 PHP程序设计基础 80- 5
什么是 CGI?
? 建立 CGI动态网页机制时,必须首先由用户从
HTML网页向服务器发送数据。
? 该数据被 CGI程序处理并产生新的 HTML网页。
? 在此过程中,用户数据须通过诸多传递环节。
? 调用 CGI应用程序的 HTML文档直接影响信息
向 CGI程序传递的方式。
? 该过程是如何进行的?浏览器上的数据怎样才
能到达 CGI应用程序呢,其数据传递机制又是
如何决定的?
第 3章 CGI概念和 PHP程序设计基础 80- 6
什么是 CGI?
? CGI程序从 3个来源取得数据:
? 浏览器用户
? 触发 CGI应用程序的 HTML网页
? Web服务器
? 所有传递到 CGI程序的数据都经由 Web服务器。
? Web服务器与 CGI程序的数据交换一般通过特
定的环境变量进行。这种环境变量通常对所有
类型的网关程序来说都是可使用的。
第 3章 CGI概念和 PHP程序设计基础 80- 7
什么是 CGI?
? 浏览器( HTTP client)将用户在 HTML网页中
输入的数据进行转换后发给 Web服务器
? 服务器依次按预先定义好的 CGI协议将数据发
给网关程序
? 这两种变量类型的数据都以属性/值的形式成
对传送(例如,color=“red” )。
第 3章 CGI概念和 PHP程序设计基础 80- 8
因 特 网
B r o w s e r
C G I
应 用 程 序
W e b S e r v e r
S h e l l 程 序
c g i _ a p p a r g 1 a r g 2
环 境 变 量
( P A T H _ I N F O,Q U E R Y _ S T R I N G
C O N T E N T _ L E N N T H,e t c )
标 准 输 入
a = a p p l e & b = b o y & c = c r a y o n
C G I 提 供 的 三 种 数 据 传 递 机 制
第 3章 CGI概念和 PHP程序设计基础 80- 9
什么是 CGI?
? 实际上,可以把 CGI看成是一个通过浏览器实
现的一个类似操作系统中 Shell[1]。
?
[1]如 DOS中的 COMMAND.COM。
第 3章 CGI概念和 PHP程序设计基础 80- 10
什么是 CGI?
? Shell
? 标准输入 键盘
? 标准输出 屏幕
? 功能选择 命令
? 功能调节 参数
? 提示提示 c:\>
?CGI
–标准输入 表单; URL地址栏
–标准输出 网络;浏览器
–功能选择 输入网页 URL;超链
–功能调节 输入网页 URL和参数
–命令提示 超链;地址栏
第 3章 CGI概念和 PHP程序设计基础 80- 11
PHP程序样例
<html>
<head>
<title>The First Greeting from PHP </title>
</head>
<body>
<?
echo "hello,$name\n";
>
</body>
</html>
第 3章 CGI概念和 PHP程序设计基础 80- 12
PHP的程序的执行过程
? 这 10行程序在 PHP中不需经过编译等复杂的过
程,只要将它放在可执行 PHP程序的环境中,
并将它存成文件 greeting.php即可。打开浏览
器,在地址栏中输入 [1]:
http://127.0.0.1/greeting.php?name=Cheng
? [1] 若未加说明,本课程所含的实验或例子假设在本地主机上的
Web服务器 Xitami上运行。 Xitami的网页发布目录在
c:\xitami\webpages。
第 3章 CGI概念和 PHP程序设计基础 80- 13
PHP程序的执行结果
图3 - 2 一个简单的P H P 示例程序的浏览器输出
第 3章 CGI概念和 PHP程序设计基础 80- 14
PHP程序发给浏览器的源代码
<html>
<head>
<title>The First Greeting from PHP </title>
</head>
<body>
hello,Cheng
</body>
</html>
第 3章 CGI概念和 PHP程序设计基础 80- 15
PHP与, 纯, HTML网页的不同
? PHP网页除了需要 Web服务器和浏览器的参与外,还需
要经过 CGI模块处理才能显示(本例中用的是 PHP.exe) ;
? PHP网页的程序参数(或变量)至少可以从 URL地址栏附
在网页的 URL一起输入;
? PHP网页的输出可以随程序参数(或变量)值变化而变化。
? 在本例网页的访问过程中,在
http://127.0.0.1/greeting.php网址之后附带了
,?name=Cheng”,该示例使用了一个输入数据项。
? 等号,=” 左边的称为“参数”,,=”右边的是参数值
? 当需要输入的数据项多于一项时,数据项之间要用,&”号隔开
第 3章 CGI概念和 PHP程序设计基础 80- 16
将 PHP程序嵌入网页的方法
1,<?Echo("这是第一个 PHP语言的嵌入例子 \n");?>
2,<?php echo("这是第二个 PHP语言的嵌入例子
\n");?>
3,<script language="php">
echo("这是第三个 PHP语言的嵌入例子,它类似
JavaScript及 VBScript语法的 PHP语言嵌入 ");
</script>
4,<% echo("这是类似 ASP嵌人语法的 PHP例子 ");
%>
第 3章 CGI概念和 PHP程序设计基础 80- 17
PHP中的引用文件
? 将常用的功能写成一个函数,预先存放在文件
中,然后在编制含有 PHP程序的网页中引用相
应的文件,就可以调用适用的函数了,这样既
可加强代码的灵活性和可读性,也有利于代码
重用。
? 引用文件的方法有两种,require()函数及
include()函数
第 3章 CGI概念和 PHP程序设计基础 80- 18
PHP中的引用文件
? require()的使用方法,如
,require(”MyRequireFile.php“);”。该函数一般放
在 PHP程序的最前面,PHP程序在执行前,就会先读
入 require语句所指定引入的文件,使它变成 PHP网
页的一部分。用此方法可将常用的函数引入网页中。
? include()的使用方法,如
,include("MyIncludeFile.php");”。该函数一般
放在流程控制的处理区域中。 PHP程序网页在读到
include语句时,才将相关的文件读进来。这种方法,
可以把程序执行时的流程处理程序简单化,增强程序
的可读性。
第 3章 CGI概念和 PHP程序设计基础 80- 19
PHP程序的注释风格
<?
Echo "这是第一种方法的例子。 \n"; //本例是
C++的注释风格
/*本例采用多行的注释方式 */
echo "这是第二种方法的例子。 \n";
echo "这是第三种方法的例子。 \n"; #本例使用
UNIX Shell注释风格
>
第 3章 CGI概念和 PHP程序设计基础 80- 20
PHP的常量、变量和数据类型
? PHP是一种弱类型的程序语言,也就是说一个
变量可以存储任意类型的数据,使用变量之前
无须声明变量是字符型还是整型。 (与 C语言
有本质区别)
第 3章 CGI概念和 PHP程序设计基础 80- 21
数据类型
? PHP的基本数据类型:
? 整数( integer):十六进制数需要 0x前缀
? 双精度浮点数( double)
? 字符串( string), 1~ n个字符
第 3章 CGI概念和 PHP程序设计基础 80- 22
数据类型
? 给字符串变量赋值,要在该字符串首尾加上双引号
(例如,,这是字符串” )。
? 在字符串插入控制符时,须使用转义字符,也就是
斜线加上指定的符号,例如:
\“=双引号 \\=斜线
\n=换行 \r=回车 (CR) \t=制表 (TAB)
第 3章 CGI概念和 PHP程序设计基础 80- 23
数据类型
? 数据类型中,PHP还有两种复合的数据类型,即
数组 (array)和对象 /资源( object/resource)。
? 数组类型,可以是二维、三维或者多维数组,数组
元素可以是整数、字符串或者浮点数,甚至是数组。
? 对象 /资源类型可以存储变量信息和函数。
第 3章 CGI概念和 PHP程序设计基础 80- 24
PHP的内置环境变量和常量
? _FILE_,执行中的 PHP程序文件名
? _LINE_,执行中 PHP程序行数
? PHP_VISION,PHP程序的版本
? PHP_OS,执行 PHP的操作系统名称
? TRUE,真值
? FALSE,假值
? E_ERROR,指向最近的错误处
第 3章 CGI概念和 PHP程序设计基础 80- 25
PHP的内置环境变量和常量
? 所有以 E_开头形式的常量,可以参考
error_reporting()函数
? 当然在程序编写时,以上的内定内置环境变量
和常量是不够用的。 define()函数可以自定义
所需要的常量
第 3章 CGI概念和 PHP程序设计基础 80- 26
PHP的内置环境变量和常量
? 一个定义常量的例子
<?
define("PI","3.14");
echo PI; //送出值 3.14;
>
第 3章 CGI概念和 PHP程序设计基础 80- 27
PHP变量
? PHP有 3种类型的变量 [1]:
? 标量:一次保存一个特定数字或字符串,即基本数
据类型中的任意一种。
? 数组:存储数值的列表。
? 对象:存储变量信息和函数。
[1] 注意:在 PHP中的变量名是区分大小写的。也就是说
$scl_varname,$Scl_varname,$Scl_Varname、
$SCL_VARNAME代表不同的变量。
第 3章 CGI概念和 PHP程序设计基础 80- 28
PHP变量
? 标量 [1]
? 标量用来记录单个信息。例如,学生的名字或购物的数量。
? 由于标量在 PHP编程中较为常用,在不致引起误解的情况下,
一般意义上的变量也就是这里所指的标量。下面是一些变量
的名字及含义:
$int_page_number:存储当前页码。
$str_text_title:存储文章的标题。
$0:无效的变量名。因为变量名不能以数字字符开始。
? [1] 在 PHP编程中,永远不必预先声明简单变量。定义或分配简单的数
据类型 (标量或数组 ),第一次使用变量名就相当于定义它。
第 3章 CGI概念和 PHP程序设计基础 80- 29
PHP变量
? 使用代码给变量赋值。
<?
$int_student_number=64;
$str_text_title=“Welcome to PHP land.”;
$int_student_number=64;
$int_student_number=64+1;
>
第 3章 CGI概念和 PHP程序设计基础 80- 30
PHP变量
? 数组变量
? 一个数组就是把一系列数字或字符串作为一个存
储单元来处理。数组中的每一个信息都被认为是
数组的一个元素。例如,可以用数组存储一个文
件中的所有行或者存储一个地址列表。
第 3章 CGI概念和 PHP程序设计基础 80- 31
数组的赋值
$arr_animal['panda']='a rare animal in China.';
$arr_ainmal['dog']='an animal in people's home.';
$arr_ainmal ['camel']='Four-legged animal.';
#也可以用下面的方法同时对多个元素赋值:
$arr_animal=array(
'panda'=>'a rare animal in China.'
,'dog'=>'an animal in people's home.'
,'camel'=>'Four legged animal.');
#请注意 PHP数组结构与其他程序语言的差别
第 3章 CGI概念和 PHP程序设计基础 80- 32
数组的赋值
$arr_names[]='Jack';
$arr_names[]='Tom';
$arr_names[]=?Jane?;
? #以上代码给 $arr_names数组增加了 3个元素,
这 3个元素的下标分别为 0,1和 2(前提是该数
组没有其他元素存在 )
第 3章 CGI概念和 PHP程序设计基础 80- 33
数组元素的应用
? 获取这些数组元素的值
$key='panda';
$value=$arr_animal[$key];
#这两行代码运行以后,$value的值变为‘ a rare
animal in China.?。
$value=$arr_animal[?panda?];
#用于数组下标的字符值始终须用单引号括起来,且
数组下标中不应该有空格。
第 3章 CGI概念和 PHP程序设计基础 80- 34
数组元素的应用
? 用于数组下标的字符值始终应用单引号括起来,
但是为什么 $arr_animal[panda] 错了呢?可
能在老的脚本中见过如下语法:
$foo[bar] = 'enemy';
echo $foo[bar];// etc
? 这样是错的,但可以起作用。那么为什么错了呢?
原因是此代码中有一个未定义的常量( bar)而不
是字符串( 'bar'),而 PHP 可能会在以后定义此
常量,不幸的是代码中有同样的名字。
第 3章 CGI概念和 PHP程序设计基础 80- 35
数组元素的应用
$arr_mixed=array(2,54,?Jack?=>'the first
name','application');
# arr_mixed数组的数组下标分别是 0、
1、’ Jack?和 2。如果数组下标没有给定,
PHP就自动提供一个。默认的数组下标是以 0
开始的,以后当数组下标没有赋值时默认值每
次加一。
第 3章 CGI概念和 PHP程序设计基础 80- 36
多维数组
? 假如既要存储书的总页数,又要存储出版商的
名字。这需要使用两个列表:
lst_number_of_pages和
lst_publisher_names,但在需要增加或修改
信息的时候,就很不方便了。并且在保证两个
列表的同步上也留下了隐患。
? 多维数组提供了一个极灵活的数据结构,每一
个数组元素均可以包含另外一个数组。
第 3章 CGI概念和 PHP程序设计基础 80- 37
多维数组
? 多维数组的初始化
$arr_books=array(
'0-679-7681-9?=>array('name'=>'The New
History','pages'=>400
,?publisher?=>?Vintage Books')
'0-512-85585-5?=>array('name'=>'Children of the
Mind','pages'=>549
,?publisher?=>?Tor Books')
);
第 3章 CGI概念和 PHP程序设计基础 80- 38
多维数组
? 上例使用了每本书的 ISBN号作为检索数组
$arr_books的多维数组下标,且每本书都有
它自己的子数组,用以描述其自己的特定信息。
为了查询子数组中的信息,数组下标由一个扩
展为两个,例如:要查询 The New History一
书的页数有多少,可以使用以下的表达式:
$arr_books[?0-51-85595-5?][?pages?]
第 3章 CGI概念和 PHP程序设计基础 80- 39
多维数组
? 用户会发现多维数组十分灵活方便。毫不夸张
他说,几乎每一个稍微复杂的程序中都可能使
用多维数组。
? 多维数组随时都可以加入需要的元素。假如在
程序运行过程中,觉得应该将作者名也存进去
的话,那么只需在多维数组中加入如下信息即
可:
$arr_books[?0-512-85595-5?][?author?]='Orson Scott
Card';
第 3章 CGI概念和 PHP程序设计基础 80- 40
多维数组
? 注意 PHP数组结构允许在一个子数组中加入一项内容,
而不会影响其他数据。当开始使用 PHP从多个数据库
表中收集信息时,多维数组能用来组合这些信息。
? 例如,当使用一个涉及到多个产品供应商的产品数据
库时,可以从第一个产品供应商开始将相关信息存入
多维数组中。然后,再读取第二个产品供应商的信息
(信息数据的组织形式与第一个可能不同),并将这
些新信息写入同一个多维数组中。读取所有产品供应
商的信息,并全部写入多维数组以后,该多维数组就
包含了所有的产品信息。
第 3章 CGI概念和 PHP程序设计基础 80- 41
变量替换
$strsize='big';
echo,Jack was a $strsize man.”;
将显示为:
Jack was a big man
注意:这样的字符串必须使用双引号。
第 3章 CGI概念和 PHP程序设计基础 80- 42
变量替换
$strsize='big';
echo "Jack was a $strsizeger man."
以上程序段存在问题,PHP无法识别,必须
改成:
$strsize='big';
echo "Jack was a ${strsize}ger man."
第 3章 CGI概念和 PHP程序设计基础 80- 43
动态变量名
//store the name of dynamic variable.
$scl_dynamic='strname';
//assign a value to the dynamic variable.
$$scl_dynamic ='John';
echo "\$strname=$strname\n";
此程序将显示:
$strname=John
第 3章 CGI概念和 PHP程序设计基础 80- 44
PHP运算符
PHP中的运算符与 C语言中的相似,它包括:
? 算术运算符
? 字符串运算符号
? 赋值运算符号
? 位元运算符
? 逻辑运算符
? 其他一些运算符
第 3章 CGI概念和 PHP程序设计基础 80- 45
算术运算符
<?
$a=12;
$b=5;
$c=7;
echo $a+$b."<br>\n";
echo $a-$b."<br>\n";
echo $a*Sb."<br>\n";
echo $a/$b."<br>\n";
echo $a%$c.“<br>\n”; //取余数
$a++;
echo $a."<br>\n";
$c--;
echo $c;
>
第 3章 CGI概念和 PHP程序设计基础 80- 46
字符串的连接符
<?
$a="PHP 4.0程序设计及实例教程 ";
$b="值得您购买 ";
echo $a":".$b;
>
? PHP的字符串运算 (String Operator)的符号只
有一个,就是英文的句号 (.)。它可以将字符串
连接起来,合并成新的字符串
第 3章 CGI概念和 PHP程序设计基础 80- 47
赋值运算符
? PHP赋值运算 (Assignment operator) 有时会
让人很感迷惑,但它却可以让程序更简洁、高
效。
<?
$a=7;
$a+=5; //即 $a=$a+5
echo $a."<br>\n";
$b="我 ";
$b.="在,//$b="我在 "
echo "$b<br>\n";
>
第 3章 CGI概念和 PHP程序设计基础 80- 48
逻辑运算符
? 逻辑运算 (Logical Operators)用来判断表达式的真
假,常用于条件语句的执行,以及循环语句的开始
或结束。
? PHP逻辑运算符的意义比较简单,具有 C语言基础
的都能理解,需要注意的是,虽然,&&”运算符和
and运算符的意义相同,但它们的优先级不同,
,&&”的优先级要高于 and。在同样条件下,先进
行,&&?运算,再进行 and运算。,||”和 or也一样
? 在 PHP中,数值 0表示逻辑值为假 (False),非 0的任
何一个数都表示逻辑值为真 (true)。例如,2,51等
都表示真值。
第 3章 CGI概念和 PHP程序设计基础 80- 49
特殊的运算符
? $int_a表示一个标量,而 int_a没有任何意义,
,&$int_a”表示内存中实际储存标量 $int_a的
地址。
? @运算符加在函数前,则不会显示错误信息,
不过这不能解决实际问题,要想解决问题,还
要用到 if语句。
第 3章 CGI概念和 PHP程序设计基础 80- 50
特殊的运算符
?,->”用来表示一个类的方法或属性,例如:
form_lable表示一个类,即表单里的一个标签,
用,form_lable->init”可表示它的一个方法,
即初始化,用,form_lable->height”可表示
它的一个属性,即该标签的高度。
?, =>”用来表示数组的元素。
?,?:”为三元操作符,其语法为:
(expr1)?(expr2),(expr3);
第 3章 CGI概念和 PHP程序设计基础 80- 51
特殊的运算符
? 三元操作符应用举例:
<?
$int_a=5;
$int_b=4;
$int_c=($int_a>$int_b)?$int_a:$int_b;
echo "$int_c<br>";
>
第 3章 CGI概念和 PHP程序设计基础 80- 52
PHP程序的流程控制
? 流程控制对任何编程语言都是很重要的,对
PHP来说当然也不例外。程序设计语言有 3种
基本的流程结构:
? 顺序
? 分支
? 循环
第 3章 CGI概念和 PHP程序设计基础 80- 53
一般分支结构
? if语句
if语句的结构为:
if (expression)
statement
其中 expression为逻辑表达式,当 expression值为真或为
非零时执行 statement语句。如:
If ($a<$b)
print "$a小于 $b";
第 3章 CGI概念和 PHP程序设计基础 80- 54
一般分支结构
? else语句
当在 expression的值为假时,需要执行
一些语句,那么就用下面的格式:
if( expression)
{ statement1}
else{ statement2}
此句的意思是当 expression的值为真时执行
statement1,为假时执行 statement2
第 3章 CGI概念和 PHP程序设计基础 80- 55
一般分支结构
? elseif语句
? 如果在 expression为假时,还有不止一种可
能,那么程序必须在 expression为假时继续
作出判断,这时就要用到 elseif语句。
第 3章 CGI概念和 PHP程序设计基础 80- 56
一般分支结构
? elseif结构为:
if(expression0)
{statenlentl //当 expression0为真或非零
}
elseif(expression1)
{ statement2 //当 expression0为假,但 expression1为真
}
[elseif(expression2)
{ statement5 //当 expression0和 expression1都为假,但
expression2为真
}]
[else
{ statement3 //当 expression0和 expression1都为假
}]
第 3章 CGI概念和 PHP程序设计基础 80- 57
一般分支结构
? if … endif 语句
在 PHP中还可以使用下列格式的 if … endif 语句:
if(expression):
statement
endif
来代替以下格式的 if 条件语句:
if(expression)
{
statement
}
第 3章 CGI概念和 PHP程序设计基础 80- 58
一般分支结构
? PHP语句和 HTML嵌套的书写风格举例
<?if($a!=5):?>
<input type='text' name='textfield' value=''>
…
<?endif;?>
这样将提高程序的可读性,也减少了程序出错的机会。
第 3章 CGI概念和 PHP程序设计基础 80- 59
循环结构
? while语句
在程序编写过程中,while语句也是常用到的。
PHP 4.0中的 while语句也和其他编程语言差
不多,其格式为:
while(expression)
{statement
}
当 expression结果为真 (True)或值不为零时
将循环执行 statement,直到 expression结
果为假,跳出循环。
第 3章 CGI概念和 PHP程序设计基础 80- 60
循环结构
? while语句还有一种形式是 PHP中特有的,其
格式为:
while(expression):
statement
endwhile
<?
$a=1
while($a<10):
print $a;
$a++;
endwhile;
>
第 3章 CGI概念和 PHP程序设计基础 80- 61
循环结构
? 和 C语言类似,PHP中也有 do while语句,其
格式为:
do
{statement
}
while(expression)
当 expression为真值或非零值时将循环执
行 statement,直到 expression为假,跳出循
环。
第 3章 CGI概念和 PHP程序设计基础 80- 62
while和 do,,while
? while循环语句先判断条件( expression)然
后再决定是否执行循环体,所以有可能循环体
( statement)一次也不能执行
? do while语句先执行循环体( statement)再
判断条件( expression)。所以无论
expression为真或为假,statement至少能执
行一次。
第 3章 CGI概念和 PHP程序设计基础 80- 63
for循环语句
PHP的 for循环语句格式非常灵活,同样
的循环语句可以用好几种不同的格式来写,
与 C语言“几乎”一样。
? PHP中 for语句最常见的格式为:
for(expression1;expression2;expression3)
{statement
}
第 3章 CGI概念和 PHP程序设计基础 80- 64
for循环语句
for ($a=0;$a<10;$a++)
print $a;
$a=0;
for(;$a<10;$a++)
print $a;
$a=0;
for(;$a<10;):
print $a;
$a++;
endfor;
第 3章 CGI概念和 PHP程序设计基础 80- 65
for循环语句
? PHP中特有的格式 (C语言中没有 )
for(expression1;expression2;expression3):
statement
endfor;
for语句首先执行初始化语句 expression1,再
判断条件 expression2,如果 expression2为真值
或非零值时将执行 statement,然后执行
expression3,此时第一个循环已经执行完毕,再
接着执行第二个循环,判断 expression2,执行
statement,expression3,直到 expression2为假,
跳出循环。
第 3章 CGI概念和 PHP程序设计基础 80- 66
for循环语句
? 所以 for语句可以看成是:
for(循环变量初始化语句;判断条件;循环变
量变化语句 )
{循环体
}
第 3章 CGI概念和 PHP程序设计基础 80- 67
break和 continue语句
? break语句的作用是跳出整个循环。
? continue标记的作用是跳出当前循环,即跳过
当前循环中剩下的还未执行的语句,再接着执
行下一次循环。
第 3章 CGI概念和 PHP程序设计基础 80- 68
break和 continue语句
? break语句示例
<?
$a=();
while($a<10)
{if($myarray[$a]="stop")
break;
…
$a++;
}
>
? Continue语句示例
<?
$a=0;
while($a<10)
{statement1;
$a++;
if($a%2)
continue;
statement2;
}
>
第 3章 CGI概念和 PHP程序设计基础 80- 69
switch语句
switch(expression)
{case expr1:
statement1;
case expr2:
statement2;
case expr3:
statement3;
default:
statement;
}
第 3章 CGI概念和 PHP程序设计基础 80- 70
switch语句
? 如果只需要判断 $a的范围是否在 0~ 2之间,那么
用 switch语句写为:
switch($a)
{case 0:
case 1:
case 2:
print "$a在 0和 2之间 ";
break;
default:
print "$a不在 0和 2之间 ";
}
第 3章 CGI概念和 PHP程序设计基础 80- 71
函数
? 函数可以帮助程序员组织自己的代码,实现一
定的功能,使程序设计模块化,让代码结构清
晰易懂。
? 例如,在程序中已经包含了一个计算圆面积的
函数 area_circle(),在调用时可以用以下代码:
$int_area=area_circle(10);
第 3章 CGI概念和 PHP程序设计基础 80- 72
函数
? PHP函数可分为两类:有返回值的函数和无
返回值的函数,相当于 Pascal中的函数
(function)和过程 (procedure)。两者的区别
在于函数定义过程中是否有 return语句。
第 3章 CGI概念和 PHP程序设计基础 80- 73
函数
? PHP函数的定义,函数的定义语法为:
function函数名 (参数列表 )
{
函数功能 ;
}
第 3章 CGI概念和 PHP程序设计基础 80- 74
函数
? 求圆面积函数定义
<?
function area_circle($int_radius)
{
$int_area=3.1415*$int_radius*$int_radius;
return($int_area);
}
echo "The area of circle is area_circle(5)";
>
? 输出结果如下:
The area of circle is 786.5755
第 3章 CGI概念和 PHP程序设计基础 80- 75
函数
? PHP函数的返回值可以是一个值,也可以是一个数组,
例如以下定义的函数就返回一个数组:
<?
function array_list()
{
return array(10,20,30,40,50);
}
>
? 利用赋值语句,$arr_temp=array_list();就得到一个
表示数组的变量 $arr_temp,它的各个元素分别为:
10,20,30,40,50
第 3章 CGI概念和 PHP程序设计基础 80- 76
函数
? 可以利用 list方法直接得到返回的数组的元素,
<?
list($a,$b)=array_list();
echo "$a<br>";
echo“$b<br>";
>
输出结果为:
10
20
第 3章 CGI概念和 PHP程序设计基础 80- 77
向函数传递参数
? 向函数传参有“按值传递”和“按址传递”两种方式
函数的按值调用
<?
function add($value)
{
$value++;
}
$int_a=2;
add($int_a);
echo "$int_a<br>";
>
函数的按址调用
<?
function add(&$value)
{
$value++;
}
$int_a=2;
add($int_a);
echo "$int_a<br>";
>
第 3章 CGI概念和 PHP程序设计基础 80- 78
向函数传递参数
? 注意,应用地址传递的方式将会改变某些参数
的值,在团队开发环境下,如果合作的程序员
之间仅简单地使用函数,而对函数具体操作不
了解,这种方式很容易造成紊乱。因不清楚某
些变量 (特别是全局变量 )什么时候会发生改变,
所以不利于变量的共享,因此在使用这种方法
的时候一定要慎重。
第 3章 CGI概念和 PHP程序设计基础 80- 79
给函数赋默认值
? PHP中允许函数在定义时为一些或全部参数
赋予默认值,也就是说,实际调用时,可以
传递给函数某些参数,也可以不传递,如果
不传递参数,参数值就用默认值;如果传递
参数,参数值就用传递的值。
第 3章 CGI概念和 PHP程序设计基础 80- 80
给函数赋默认值
<?
Function self_font($text;$color="red";$size=6){
echo "<font size=\"$size\" color=\"$color\">$text</a>"
}
>
<? self_font('I am a student!');?><br>
<? selt_font('I am a student!','green');?>
<br>
<? Self_font('I am a student!','green',4);?>
<br>
>
? 这段代码将输出 3行,I am a student。但是第一行颜
色为 red,字体大小为 6。第二行颜色为 green,字体
大小为 6。第三行颜色为 green,字体大小为 4。
第 3章 CGI概念和 PHP程序设计基础 80- 81
本章小结
? 了解和掌握 CGI的基本概念和程序处理过程;
? 理解 PHP程序设计的基本要素
? PHP基本元素
? PHP程序流程控制
? PHP函数
? 掌握 PHP工作环境的安装和 PHP程序调试技术
等。