1、网 站 设 计 与 建 设 Website design and developments,第21章 PHP编程,第三部分 网站设计技术,21.1 PHP概述,优势在于: PHP是免费的 PHP是跨平台的 PHP受到广泛支持。 诸如IIS、Apache等服务器软件都支持PHP。,PHP是英文Personal Home Page的缩写。 工作原理 通过使用PHP编写的网页访问服务器时, 脚本首先传给PHP引擎, 在它进行处理后再将处理结果HTML文本传给Web服务器, Web服务器再将HTML代码返回给相应的客户, 客户端的浏览器解释HTML代码在客户端屏幕显示网页内容。 PHP代码是在服务器端
2、运行的,HTML代码是在客户端运行的,这就是PHP与脚本语言的最大区别。,2. PHP最简单实例,PHP最简单实例,PHP的描述方法, 标准描述标准描述“Hello World!”; 需要php.ini设置 short_open_tag = On (缺省on)需要php.ini设置 asp_tags = on (缺省off),3.PHP的注释方式,4 PHP的语句分隔,PHP语句之间使用分号“;”分隔 由于?标志PHP语言块的结束,它前一行语句的分号可以省略,5. PHP的HTML输出,PHP使用echo、print和printf等命令函数输出信息。 “; $tmp=“这本书的价格是:“; $
3、sid=32.5; print $tmp.$sid.“元“.“; ?,21.2 变量、运算符与表达式,21.2.1 PHP数据类型 简单数据类型 数字类型 字符串, 组合数据类型。 数组 类,数据类型-数字,整型数:18,O17, Ox18 浮点数: 0.1234 .123 1.23456E+5,返回,数据类型-字符串,单引号字符串:实验,Marys book 双引号字符串: “书名是“三国演义” 反引号字符串:PHP运行系统命令例如DIR,返回,“; echo $MyStr; echo $MyStr; print “; print “书名是“三国演义“; print 书名是“三国演义“; ?
4、 “; echo dir; echo “; ?,21.2.2 PHP标识符,构成规则 字母、数字和下划线; 标识符的长度是任意的; 标识符的第一个字符必须是字母或下划线。 大小写敏感的 变量名、数组名、函数名前须要加一个美元货币符号“$” 变量是不需要声明的,变量的作用域,变量的作用域就是变量起作用的范围 局部变量 局部变量是指在某个函数内部定义的变量, 它的作用域只限于它所在的函数。 与C语言中的局部变量相同,当所在的函数调用结束后,局部变量被分配的存储空间就会被撤消,局部变量也随之消失。 全局变量 全局变量在所有的函数之外声明, 与其他编程语言不同的是,PHP中的全局变量并不是在函数内部可
5、见。 在PHP中创建一个函数时,必须明确告诉PHP在这个函数中需要使用哪些全局变量,要使全局变量通透到函数中去,还可以使用$GLOBALS数组。 $GLOBALS是一个相关数组,它的下标是全局变量名,而值则是对应的变量所包含的内容。 ,静态变量 静态变量:函数结束运行后它所占用的存储空间依然存在,它的值在该函数被再次调用前保持不变。 静态变量在声明时前面需要加关键字static。,静态变量 “; echo “普通变量“.“$int_count“.“; ?,变量类型转换,自动转换 变量赋值, “; $var=5+“10.2e3“; echo $var.“; $var=5+“abc1.0e3“;
6、echo $var.“; $var=5+“3.3+15“; echo $var.“; $var=5.1+“3.3+15“; echo $var.“; $var=5.1+“3.3e2bc“; echo $var.“; ? ,返回,强制转换 转换目标变量=(强制类型)转换源变量 int settype(string var,string type); ,变量类型转换-强制转换实例,“; $rel_test=12.58; $int_return=0; $int_return=settype($rel_test, “integer“); /强制转换的第二种方法 echo $rel_test.“; ec
7、ho “转换状态:“.$int_return; ?,显式强制转换类型和settype()类型转换的区别: 第一种方式只是在本次运算或操作中将变量的类型进行临时改变,实际上,对应存储空间中变量的数据类型并没有发生变化。 而第二种方式则不然,在使用了settype()函数后,变量的数据类型会在存储的层面上发生改变,即变量类型转换成了新的数据类型。,常量,自定义常量 一般放在文档的首部 常量名最好是用大写,PHP大小写敏感 在.inc文件中定义常量,使用require、inlude调用 系统定义常量 _FILE_ 当前解析的脚本文件名 _LINE_当前解析的脚本文件的当前行号 PHP_VERSION
8、 当前PHP的版本号 PHP_OS 当前的操作系统名称 E_ERROR 标志最近不可恢复的错误,常量定义实例“;echo USERNAME.“;echo PASSWORD.“;echo DESC_PROG.“; ?,常量-自定义常量,返回,系统定义常量演示“; echo “当前行号:“._LINE_.“; echo “当前操作系统:“.PHP_OS.“; echo “当前PHP的版本:“.PHP_VERSION.“; ?,常量-系统定义常量,返回,21.2.3.操作符,算术操作符:+ - * / % $a+ +$a $a- -$a 字符串操作符: “.”$str_val=“It is time
9、“.“to go to bed.“; 比较运算符:“=” “” “=” “”,其他运算符 “$”运算符 变量名前加“$”运算符。 “&”运算符 取得某个变量的存储地址。 “?:”运算符 条件运算符 “-” 引用一个类的方法或属性 “=” 在数组定义中连接下标与值 “”运算符的作用是抑制错误报告,当PHP脚本中的函数调用出现错误时,错误信息会出现在用户的浏览器页面上,为了避免这一点,可以在PHP代码中使用“”运算符来使得这些错误信息不发送到用户浏览器中。,21.3. 控制语句,if, else, elseif, 特殊判断 switch跳转语句 while、do while 和 for 循环 br
10、eak、continue,4) print “a4, but b=a“; ?,“; else $log_enter_allow=false; echo “请注册后再登入“; ?,语句和控制结构-if,=90) echo “学分等级为A“.“; elseif ($int_score=80) ?,语句和控制结构-if(续),返回,语句和控制结构-if(续-endif),=90): echo “学分等级为A“.“; elseif ($int_score=80) endif ?,返回,语句和控制结构-if(续-特殊判断),=80?“合格“:“不合格“; echo “你的考核成绩:“.$str_chec
11、kout.“; ?,返回,13.语句和控制结构-switch,$int_a=7; $int_b=4; $int_c=$int_a%$int_b; switch ($int_c) case 0:echo $int_a.“是4的倍数!“;break;case 1:echo $int_a.“除以4的余数是1!“;break;case 2:echo $int_a.“除以4的余数是2!“;break;case 3:echo $int_a.“除以4的余数是3!“;break;default:echo “不可能显示该内容“; ,返回,13.语句和控制结构-while,“;$int_start+; ?,“;$
12、int_start+; while ($int_start,返回,13.语句和控制结构-dowhile,返回,13.语句和控制结构-for,“; ?,10)break;echo “;echo $int_i+; ?,返回,13.语句和控制结构-break、while,21.4 数组:PHP中可以用字符串表示数组元素的下标,$my_friends=array(“Mike”,”Ban”, “Clare”); $my_friends=array(“best”=“Mike”,”good”=”Ban”, “Clare”);,$employees=array(“Mike”=array(“age”=33,”s
13、alary”=”$3000”, “position”=”manager”),“Ban”=array(“age”=24,”salary”=”$1200”, “position”=”worker”);,function decelerate($num) if ($this-speed$num)$this-speed-=$num;elsereturn 0; $vehicle=new Vehicle; $vehicle-accelerate(45); $vehicle-accelerate(45); $vehicle-accelerate(45); $vehicle-accelerate(45); $
14、vehicle-accelerate(45); ? ,21.5 类, speed+$numspeed+=$num;echo $this-speed;echo “;else$this-speed=150;echo $this-speed;echo “; ,21.6 函数,保留函数 I/O函数 数据函数 数学函数 时间函数 数据库函数 执行外部程序的函数:exec、system 退出函数:exit 自定义函数,I/O函数, 输出函数 包括print()、printf()和echo。 print()是最简单的输出函数,它直接将参数发送给浏览器; printf()用于格式输出 echo是早期的PHP版
15、本中用来做输出的,它的特殊之处在于不需要括号,PHP输出信息函数-PRINT,; print (“显示一个字符串“);/使用括号 print ;/print可以在for循环中,echo 则不可以 for ($i=1,$j=1;$i“) $j+=$i+$j;echo “$i $j“; ?,2)文件操作函数 3)文件引用函数 Require 作用是用指定的文件替代自身,成为程序的一部分。 它通常放在程序的最前面,PHP程序在执行前,就会读入相应的文件, 通常的格式为:require“目标文件” Include 一般放在流程控制的处理区段中, 区别: include语句在每次调用时都要重新计算一遍,
16、将特定的文件包含在程序里; require语句只在它第一次出现时,就已经被相应文件所代替了,不会考虑在这以后该文件内容是否发生变化。 4)调试函数,4.PHP调用文件,Include:每次重新计算,include引用文件“; echo “Hello World ! “; ?,Require:仅载入一次,require引用文件“; echo “Hello World ! “; ?,PHP函数-exec、system,用于执行一个外部程序的函数 该函数不显示输出,可以将输出放到一个数组中 格式:string exec(string command,string array_name,int ret
17、urn_var);system(string command);,返回,PHP函数-exec、system, “; echo “返回值:“.$MyReturn.“; ? ,返回,PHP函数-exit,退出当前的脚本文件格式: Exit;,自定义函数,PHP简单函数样例 函数返回多个值的实例 函数传递参数实例(传值、传址) 函数嵌套调用,返回,14.函数-简单样例,函数返回多个值的方法“; echo “直径为“.$int_circle_diameter.“的圆周长是“.$second.“; echo “直径为“.$int_circle_diameter.“的圆面积是“.$third.“; ?,返回,14.函数-返回多个值的实例,向函数传递参数-传值 “; ?,14.函数-向函数传递参数-传值,向函数传递参数-传址 “; ?,返回,14.函数-向函数传递参数-传址 &,返回,14.函数-向函数传递参数-可以设定默认值,向函数传递参数-为传递的参数设默认值 $text“; ?,函数嵌套 0)$str_product=$str_product.($str_product=“?“:“*“).(string)$count;$count-;fun_product($count);else echo $str_product; ?,递归,