1、第一篇 PHP,PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。PHP是能让你生成动态网页的工具之一。PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。,第一章 PHP概述,PHP=? PHP:Hypertext Preprocessor Personal Homepage Personal Homepage Program Personal Hypertext Preprocessor(超文本预处理器) PHP是一种服务器端的HTML嵌入式的脚本描述语言,其最大特色是数据库层操作
2、功能的强大。,谁挺PHP,国内各大专院校 研究机构 营利事业 休闲娱乐,WHY PHP?,不能做的最少,能做的最多。就会让我们爱上PHP 真的吗?问Google就知道! 最大的优势:Free!免费!Google告诉全世界有8亿多个网页用PHPASP有5亿网页JSP有1亿网页;总共有16亿网页。,PHP vs ASP vs JSP,ASP 微软平台,除非用钱买。 漏洞多 效能差 程序结构化不够 除错不易 元件搞到死,JSP,硬件要求高 要有Java基础 除错不易 号称执行速度最快通过编译加速,PHP也行 大企业的商业模型较适用,PHP,跨平台、跨Web server 结构化(类似C)、除错容易
3、效能极佳 硬件要求低 源代码公开、漏洞少、风险低 服务较多讨论区、留言板、网络日志 甚至可以写命令行程序、写图形使用者界面程序,需要的基础,HTML基础 C语言基础 网页设计基础 SQL语法基础,PHP嵌入HTML,1 2 3 4 9 10,PHP代码在HTML中嵌入形式,. 甚至是在ASP中使用“”来嵌入PHP 我推荐第一种形式,让人一看就知道所包含的内容是PHP。,参考资料,PHP Biblehttp:/ PHP 官方网站http:/ Googlehttp:/.tw,第二章 PHP语法探索,PHP语言中的简单约定每一个语句都以“;”结束,但结束标签?也可用来 表示语句的结束。注解:单行时用
4、“/”开始,多行时用“/*”开始,以 “*/”结束,和C语言一样。,哈啰 世界,First program,程序的执行,程序执行次序 由上往下、由右往左 遇到特殊控制才能回头 程序停止的方式执行完结束错误中止指令结束,编程时的考虑,不用的变量尽量不设置(浪费) 减少测试性写法,降低废码(男女) 考虑程序弹性(不写死,套变数) 缩排、括号要对称(便于排错) 标识符的控制(变量名称的长度),引入档案,Require(“档案名称”);引入失败时就挂(error);不管在程序的哪一部分使用这个函数,只要程序一引用,头文件的内容就作为主程序的一部分来运行。 Include(“档案名称”);引入失败时不理
5、他(warning),程序自动执行下去。在执行语句中,只有执行到这个函数语句时,这个函数所引用的头文件才会包含到主程序中。 还有别的,程序注解,/ 单行注解,给两斜线 /* */ 斜星 星斜/*这里写的是注解,可自由地写*/ 和Java完全一样。在使用多行注解时请注意,不能让注释之间相互包含,否则会引起错误。,常量与变量,常量 ex. 圆周率 变量 ex. $x,$y,$z在标识符前加$就成了 PHP的变量。 活动变量:即一个变量的名字将被动态的设置和使用。一个活动变量获得一个变量的值,并将其视为该变量的名字,这里要在变量名前加上两个$,例如:$a=“hello”; $a=“world”;ec
6、ho”$a $a”与echo”$a $hello”输出是一样的。,常量类型,True 这个常量就是真值。 False 这个常量就是假值。 其他例子 http:/member.ettoday,com/book/3.2.1.php.htm _ FILE_ _LINE_ PHP_VERSION PHP_OS E_ERROR E_WARNING E_PARSE E_NOTICE 在PHP中,对常量的类型要求并不特别严格。上面列出的是预定义的常量。,_FILE_ 这个内定常量是PHP程序文件名。 _LINE_ 这个内定常量是PHP程序行数。 例子: ,PHP_VERSION 这个内定常量是PHP程序的版
7、本。 PHP_OS 这个内定常量是指执行PHP程序的操作系统名 称。 E_ERROR 这个常量指到最近的错误处。 E_WARNING 这个常量指到最近的警告处。 E_PARSE 这个常量为解析语法有潜在问题处。 E_NOTICE 这个常量为发生不寻常但不一定是错误处。,当在编写程序时,以上给出的内定常量往往不够用。Define()函数可以让我们自行定义所需要的常量。例如: ,变量类型,String Integer Double Array Object PHP不是强类型的语言,进行变量声明时根本不需要特别地指出变量的类型,在程序运行时PHP根据上下文,自动确定变量的类型。,变量初始化初始化一个
8、变量的值是非常简单的,只需指定一个值即可。 变量的范围变量的活动范围仅仅局限于定义它的上下文,只有单独的活动范围。但在用户自定义的函数中,使用任何变量,其缺省值被限制在此函数的本地范围之中。静态变量:它仅在本地函数活动范围中存在,但当程序离开这个函数时,它的值并不丢失。当函数递归调用时,使用静态变量是一种很重要的方法。,变量的使用,使用保留字 加上$拿去用 类型转换松散 免声明 有关全局变量global $变量,它必须在一个函数中声明;第二种接受全局变量的方法是使用PHP特殊的定义数组$GLOBALS。 $GLOBALS数组是PHP程序中的比较特殊的变量,不必声明,系统会自动匹配相关的变量在里
9、面。,示例 ,变量在引号中的妙用,单引号 其内的变量就是字符串 双引号” “聪明的PHP帮您自动处理,运算符号,算术、字符串、逻辑、比较、位、其他 程序重要的一环 理解、查表+ 加法运算 % 取余数- 减法运算 + 累加* 乘法运算 - 递减/ 除法运算,字符串运算,运算符其实是 . 例”我是” . “土星” 善用”.=” (注意:不是=.=),例子,;$c .= $a . $b;echo $c,;?,复合运算符,= 将右边的值连到左边(一定要会) += 将右边的值加到左边 -= 将右边的值减到左边 *= 将左边的值乘以右边 /= 将左边的值除以右边 %=将左边的值对右边取余数 .= 将右边的
10、字符串加到左边,位元运算,& 与(and) | 或(or) 异或(xor) 向右移 取1的补码,逻辑运算,& 与 | 或 ! 非 xor 异或 两个操作符不同时结果为真。 and 与 or 或 两个与、或结果一样,但优先级不同。,比较运算符, 大于 = 大于等于 = 等于 != 不等于,其他运算符,$ 变量 & 变量的地址(加在变量前面) 不显示错误信息(加在函数前) - 对象的方法或者属性 = 矩阵的元素值 ?:三元运算符,要举例说明。,流程控制,php没有goto php不使用main()因为碰到就执行,PHP的基本语句,If(condition) statement1statement2
11、 else statement3statement4 ,Ifelse,有四种形式if 语句:if(expr)statement;else 语句:elseif 语句:if($a$b)print “a is bigger than b”;elseif($a=$b)print “a is equal to b”;elseprint “a is smaller than b”;if语句的交互语法:if() . endif,IF语句的交互语法,常常用在把HTML嵌套进IF语句中,但是可以将这种方式应用到任何位置。除了使用之外,IF表达式可以跟随一个冒号,一个或多个语句,然后使用ENDIF结尾。示例: A
12、=5 if($a = 5):print”;elseif($a = 6);print”a equals 6”;print”!”;else;print”a is neither 5 nor 6”;endif;,while,While(condition1) statement1statement2if(condition2)breakstatement3 如果一开始condition1的值为假,中的语句一次也不执行。,上面是用把多个语句括起来形成一个组,也可以使用下面的语法:WHILE(expr): statement.ENDWHILE;示例:,while,break 跳出当前的循环体,提前结束循
13、环。 continue 结束本次循环,跳到循环的开始处,接着进行 下一轮循环的判定。 exit(不见得用于此,但是常用),dowhile,do statement1statement2 while(condition),for,for(expr1;expr2;expr3) statement第一个表达式expr1将在循环开始时无条件的被求解执行;在每一个循环开始时,第二个表达式将被执行,如果它的值为真,该循环继续执行,否则循环结束;在每个循环的最后第三个表达式将被执行。 For(i=0;i9;i+) statement1statement2 任何一个表达式都可以是空的。在FOR循环中PHP也支
14、持交互的冒号语法:for(expr1;expr2;expr3):statement;endfor;,foreach,foreach(array as $value)statement; foreach(array as $key=$value)statement; 矩阵例:$myarray=array(“土星”,”太阳”,”火星”,”木星”); foreach 语句用于循环遍历数组。每进行一次循环,当前数组元素的值就会被赋值给 value 变量(数组指针会逐一地移动),Foreach主要是操作数组的(PHP5中可以操作对象),它有两种格式:一: foreach (array_expressio
15、n as $val) print($val.“;“); 二:,foreach (array_expression as $key=$val) print($key.“=“.$val.“;“); ,先来看第一个语句,这个语句比较简单,可以说跟 asp中的for each大同小异,array_expression指的是 一个数组表达式,as $val语句将顺序取得该数组的值 并保存到$val变量中,此种方法只能取得数组内的 值,而不能取得数组的下标索引值。例如: $myArray=array(“1“=“val1“,“2“=“val2“,“3“=“val3“); foreach($myArray a
16、s $val) print($val.“ “); 其结果会输出:val1 val2 val3,再来看看第二种格式,第二种格式除了能像第一种格式一样得到数组内元素的值外,还能得到元素的索引值,并保存到$key变量中,如果数组的索引值未经过人工设定,则返回系统默认的设定值, 看下面例子: 先看一个简单的一维数组: $myArray=array(“1”=“val1”,“2”=“val2”,“3”=“val3”); foreach($myArray as $key=$val) print($key.“=”.$val.“;”); 该程序将出输出:1=val1;2=val2;3=val3;,接下来我们再来
17、看一个复杂一点的二维数组遍历,程序如下:,$myArray=array(“1“=array(“11“=“val11“,“12“=“val12“,“13“=“val13“),“2“=array(“21“=“val21“,“22“=“val22“,“23“=“val23“),“3“=array(“31“=“val31“,“32“=“val32“,“33“=“val33“) ); print(“); foreach($myArray as $key=$val) print(“.$key.“);if (is_array($val) /判断$val的值是否是一个数组,如果是,则进入下层遍历print(“
18、);foreach($val as $key=$val) print(“.$key.“=“.$val.“);print(“); print(“);,由于上面的是一个二维数组,在第一次遍历后所得到的$val值将是一个数组,所以我在遍历中加了一个判断,以便进行二层数组遍历。大家仔细看一下,就能看懂,很简单的,不要被上面那些乱七八糟的字符所吓到了,呵呵。如果有条件,你还可以把它们复制到本地phpserver上运行下,看看效果,再分析,这样就更容易明白了。,switch,switch(expr)case expr1:statement1;break;case expr2:statement2;brea
19、k;default: statementN;break; 注意条件出现的前后次序。不要在每一个分支语句后面忘记break语句。,函数,Function myfunc($a,$b)/执行一些动作return $c; 函数中可使用任何有效的PHP代码,甚至是其他的函 数或类的定义。,返回值用return语句返回值,返回值可是任何类型,包括列表和对象;函数不能同时返回多个值,但可通过返回列表的方式来实现。 参数外部信息可通过参数表传递给函数中。参数表是一系列逗号分隔的变量或常量。PHP支持值型参数(默认)、变量参数和默认参数,不支持变长参数表,但可用传送数组的方法实现。 关联参数若允许函数修改传入参
20、数的值,就使用变量参数;若希望形参始终是变量参数,则定义时形参前加”&”;若可变实参传递给不变形参,则在调用函数时,实参前加”&”。,默认值函数可定义C+风格的默认值。运行结果为:Making a cup of cappucino.Making a cup of espresso. 当使用默认参数时,所有默认值的参数应放在无默认值参数的后面定义。,类,类(class)是一系列变量和函数的集合。 类是实际变量的原始模型,要通过new操作符建立一个所需类型的变量。 类可通过从其他类扩充而得到,这要使用关键字extends. 使用操作符-来存取当前对象的变量或函数;用$this代表当前对象。 类可有
21、构造器,其名字和类一样,构造器可有参数,也可无参数。,对象,Class 对象类别add_item(“10”,1);?,PHP函数导览,PHP Bible(圣经)http:/ 教您边查边写,网址传值原理,Test.php?font=5&color=red? 挂入变量串Font、color变量5、red变量的值&串起变量,网址传值原理,观摩网址传值 先写HTML 改写成PHP 测试用web server吆!,作业,N N乘法表http:/127.0.0.1/example.php?a=9 以上为99乘法表http:/127.0.0.1/example.php?a=6 以上为66乘法表,参考网站,P
22、HP Biblehttp:/ PHP官方网站http:/ Googlehttp:/www.G.tw,参考网站,首页制作百宝箱http:/dob.tnc.edu.tw Jollen网络学园http:/www.jollen.org/ Php+mysqlhttp:/sy3es.tnc.edu.tw/teaching/php mysql/php-mysql.htm,第三章 PHP函数参考,基本变量类型函数数学运算函数任意精度的数学运算函数数组函数字符串函数变量函数,常用的文件和信息函数动态库加载函数日期和时间函数目录函数图像函数PHP选项和信息函数正则表达式函数,其他扩展函数邮件函数辅助函数网络函数H
23、TTP函数FTP函数压缩函数URL函数,3.1基本变量类型函数,数学运算函数abs() $a=abs(-2);cos()和acos() float cos(float arg) float acos(float arg)sin()和asin() float sin(float arg) float asin(float arg)tan()和atan() float tan(float arg) float atan(float arg)atan2() float atan2(float y,float x) 求y/x的反正切base_convert() string base_convert(
24、string number,int frombase,int tobase),数学运算函数bindec()和decbin() int bindec(string binary_string)string decbin(int number)dechex()和hexdec() int hexdec(string hex_string)string dechex(int number)decoct()和octdec() int octdec(string oct_string)string decoct(int number)exp()和pow() float exp(float arg)floa
25、t pow(float base,float exp),数学运算函数floor()、round()和ceil() int floor(float number)double round(double val) int ceil(float_number)getrandmax()、rand()和srand() int getrandmax(void)int rand(int min,int max) void srand(int seed)mt_getrandmax()、mt_rand()和mt_srand()int mt_getrandmax(void) int mt_rand(int min
26、,int max)void mtt_srand(int seed)log10()和log() float log10(float arg)和float log(float arg),数学运算函数max()和min() mixed max(mixed arg1,mixed arg2,)mixed min(mixed arg1,mixed arg2,)number_format()string number_format(float number,int decimals,string dec_point,string thousands_sep)pi() double pi(void)sqrt(
27、) float sqrt(float arg),任意精度的数学运算函数(在bcmath被使用时才可使用),数组函数array() array array() $var_array=array(“name”=”姓名”,“address”=”地址”,“work”=”工作”);list() void list() $var_array=array(“语文”,”数学”,”英语”)list($arg1,$arg2,$arg3)=$var_array;array_count_values array_coun_values(array input)array_walk() int array_walk(a
28、rray arr,string func,mixed userdata),数组函数arsort()和asort() void arsort(array array)void asort(array array)rsort()和sort() void asort(array array)void sort(array array)ksort() int ksort(array array)count和sizeof() int count(mixed var)int sizeof(array array)current()、prev(和)next() mixed current(array arr
29、ay)mixed prev(array array) mixed next(array array),数组函数reset()和end() mixed end(array array)mixed reset(array array)each() array each(array array)key()和pos() mixed key(array array)mixed pos(array array)shuffle() void shuffle(array array)uasort()、uksort()和usort() void uasort(array array,function cmp_f
30、unction)void uksort(array array,function cmp_function)void usort(array array,function cmp_function),字符串函数chop()、trim()和Itrim() string chop(string str)string trim(string str) string Itrim(string str)chr()和ord() string chr(int ascii) int ord(string string)chunk_split() string chunk_split(string string
31、,intchunklen,stringend)convert_cyr_string()string convert_cyr_string(string str,string form,string to)echo() echo(string arg1,stringargn),字符串函数print()、printf()和sprintf() pringt(string arg)int printf(string format,mixedargs)string sprintf(string format,mixedargs)flush() void flish(void)explode()和impl
32、ode()(或join()array expole(string separator,string string)string implode(string glue,array pieces)md5() string md5(string str)parse_str() void parse_str(string str),字符串函数addslashes()和stripslashes()string addslashes(string str) string stripslashes(string str)get_meta_tags()array get_meta_tags(string f
33、ilename,intuse_include_path)htmlentities()和htmlspecialchars()string htmlentities(string string)string htmlspecialchars(string string)quotemeta() string quotemeta(string str),字符串函数rawurldecode()和rawurlencode()string rawurldecode(string str) string rawurlencode(string str) setlocal() string setlocal(s
34、tring category,string local)similar_text() int similar_text(string first,string second,double percent)soundex() string soundex(strin str)strcasecmp()和strcmp()int strcasecmp(string str1,string str2)int strcmp(string str1,string str2),字符串函数strcspn()和strspn() int strcspn(string str1,string str2) int st
35、rspn(string str1,string str2) strip_tags() string strip_tags(string str,stringallowable_tags) stristr()和strstr()(或strchr()string stristr(string str1,string str2)string strstr(string str1,string str2) strrchr() string strrchr(string str1,string str2) strlen() int strlen(string str),字符串函数strpos()和strr
36、pos() int strrpos(string str1,string str2)int strpos(string str1,string str2,int offset)strrev() string strrev(string str1)strtok() string strtok(string str,string token)strtolower()和strtoupper()string strtolower(string str) string strtoupper(string str)str_replace() string str_replace(string substr
37、,string newstr,string str)strtr() int strtr(string str,string from,string to),字符串函数substr() string substr(string str,int start,int length)ucfirst()和ucwords()string ucfirst(string str)string ucwords(string str),变量函数doubleval()、intval()和strval()double doubleval(mixed var) string strval(mixed var)int i
38、ntval(mixed var,int base)empty() int empty(mixed var)gettype()和settype()string gettype(mixed var) int settype(string var,string type)is_double()、is_float()、is_int()、is_integer()、 is_real()、is_string()和is_long()int is_*(mixes var)isset()和unset() int isset(mixed var) int unset(mixed var),13.2 常用的文件和信息
39、函数,动态库加载函数dl()int dl(string library),日期和时间函数checkdate() int checkdate(int month,int day,int year)date()和gmdate() string date(string format,int timestamp)string gmdate(string format,int timestamp)mktime()和gmmktime() int mktime(int hour,int minute,int second,int month,int day,int year,int is_dst) int
40、gmmktime(int hour,int minute,int second,int month,int day,int year,int is_dst)getdate() array getdate(int timestamp)gettimeofdate() array gettimeofdate(void)gmstrftime()和strftime()string gmstrftime(string format,int timestamp)string strftime(string format,int timestamp),日期和时间函数microtime()和time() str
41、ing microtime(void) int time( ) 目录函数chdir() int chdir(string directory)dir() new dir(string directory)opendir() int opendir(string path)readdir() string readdir(int dir_handle)rewinddir() void rewinddir(int dir_handle),文件系统函数 basename()和dirname()string basename(string path) string dirname(string pat
42、h) chgrp()、chmod()和chown()int chgrp(string filename,mixed group)int chmod(string filename,mixed mod)int chown(string filename,mixed user) clearstatcache() void clearstatcache(void) copy() int copy(string source,string dest) dirkfreespace() float diskfreespace(string directory) fopen() int fopen(stri
43、ng filename,string mode,intuse_include_path),文件系统函数popen() int popen(string command,string mode)fclose() int fclose(int fp)pclose() int pclose(int fp)feof() int feof(int fp)fgetc() string fgetc(int fp)fgets() string fgets(int fp,int length)fgetss()string fgetss(int fp,int length,string allowable_tag
44、s)fread() string fread(int fp,int length)fwrite()和fputs()int fwrite(int fp,string str,int length)int fputs(int fp,string str,int length),文件系统函数fpassthru() int fpassthru(int fp)flock() bool flock(int fp,int operation)ftell()、fseek()和rewind()int ftell(int fp) int fseek(int fp,int offset) int rewind(int fp),