《2014年辛星PHP教程夏季版.pdf》由会员分享,可在线阅读,更多相关《2014年辛星PHP教程夏季版.pdf(169页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2014 年辛星 PHP 教程夏季版 1/169 2014 年辛星 PHP 教程夏季版 建议:搜索“辛星 php”可以找到更新更全更实用的教程,辛星,期待您的关注。说明:如果您在一年后看到了本教程,那果断可以丢弃了,因为肯定有更新的版本出现了。呼吁:如果您想和我联系,不管是想得到我的资料,还是跟我交流想法,或是想和我写后续版本,都可以发邮件给我:,谢谢。我们的特色:更新更全更实用。我们的口号:快乐编程,幸福生活。前进的路上,辛星陪伴您。只要星哥在,编程充满爱。2014 年辛星 PHP 教程夏季版 2/169 目录:前言4 第一部分:PHP 最基础的知识 第零节:简介 PHP 以及开发环境搭建6
2、 第一节:变量的类型及其运算和赋值11 第二节:流程控制结构17 第三节:函数29 第四节:数组和字符串35 第五节:其他一些知识43 第二部分:PHP 在 web 开发中的简单应用 第零节:本部分内容简介49 第一节:表单的使用以及 GET 和 POST51 第二节:Cookie 和 Session55 第三节:数据库的简单操作62 第四节:PHP 操纵数据库74 第五节:其他一些说明84 2014 年辛星 PHP 教程夏季版 3/169 第三部分:使用 PHP 写一个论坛程序 第零节:功能简介和编写思路85 第一节:数据库建模和大致模板的创建87 第二节:编写函数库和测试库以及其他说明99
3、 第三节:实现用户模块功能104 第四节:实现版块功能114 第五节:实现看帖和发帖的功能121 第六节:实现用户中心的功能129 第七节:总结134 第四部分:PHP 的面向对象 第零节:面向对象简介136 第一节:类和类的实例化138 第二节:继承、接口和抽象类152 第三节:静态、常量、再看$this161 第四节:总结166 后记167 2014 年辛星 PHP 教程夏季版 4/169 前言*PHP 情结*1.我想可能很多人和我一样,如果接触过 Java 和 C+这种笨重的语言,那么一定会喜欢 PHP 这种小巧的语言。2.第一次接触 PHP,就感觉好爽啊,写的程序直接用浏览器查看就可以
4、了,不像 Java,封装的那么深。3.而且 PHP 框架也多数是非常的简洁而小巧的,不像 Java框架那么笨重,我想读完一遍 PHP 框架是非常现实的,但是随便一个 Java 框架,你读一遍还不得累个半死。*对几种主流语言的评价*1.当然,既然是主流语言,肯定自有它的价值,但是,每个人都会有自己的看法,这一点也是毋庸置疑的。2.C+和 C 是出了名的学习曲线陡峭,原因很简单,光是一个指针就够头疼了,而且对内存的管理,注定使用 C 和 C+是一件很累的事,因此 C 和 C+也多用于对响应速度要求较高的应用程序中,而且 C 和 C+也多数是算法党,热衷于速度和效率。3.Java 在早些时间就是出了
5、名的响应慢,但那时很久以前的事情了,现在的 Java 的运行语速已经可圈可点了,而且Java 在移动端的开发也确定了它的无可替代性,而且 Java适合做大型应用,围绕着它的技术也是层出不穷,是一门非常赞的语言。4.Python 算是一个比较全能型的语言了,可以开发桌面应用,也可以做 web,还可以写网络爬虫,也可以作为系统管理员使用的语言,还可以做数值计算,等等,几乎是一门全能的语言,但是各个方面都没有第一的感觉,但是各个方面又还不错。2014 年辛星 PHP 教程夏季版 5/169 5.Ruby 绝对算是一门非常优秀的语言,特别对于开发 web应用来说,而且 rails 框架一统 ruby,
6、也是非常的赞,但是很可惜中日关系历来不好,因此,这门语言想在中国普及,难上加难。6.C#、VB 等语言,我是从心里不喜欢,主要原因就是因为它们是微软的产品,但是 C+不是微软的产品,虽然微软的VS 使用人群很广泛。7.对于 Objective-C 等语言,我也是不感兴趣,不做评判,对于 Pascal 和 Delphi,只能说是时代的眼泪。8.对于 PHP,我还是特别喜欢的,不管它有什么缺点,但是它小巧、灵活,开发速度快的优点确实抹杀不掉的,而且专为 web 而生,做起 web 来也是得心应手。*本教程*1.本教程是 2014 年第一版,肯定会涉及到面向对象等方面的知识,而且会讲到一个框架,我的
7、首选还是国内的TkinkPHP.2.而且我也会涉及一些 MySQL 的知识,毕竟,PHP 和 MySQL的关系太好了。3.对于前台界面的编写,基本的 HTML 和 CSS 知识我想大家还是应该拥有的,我也会编写一本教程具体讲解,这里就不过多解释了。*版权*1.本教程版权归辛星本人所有,但是可以自由传阅、修改和印刷。2.辛星 PHP 教程,期待您的支持。2014 年辛星 PHP 教程夏季版 6/169 第一部分:PHP 最基础的知识 第零节:简介 PHP 以及开发环境搭建*PHP 简介*1.PHP 是 Hypertext Preprocessor 的缩写,即超文本预处理器,是一种开源的脚本语言,
8、其解释器使用 C 语言写成。2.PHP 专门为开发 web 应用程序而生,而且学习门槛相当低,使用也非常广泛,当前的最近版本是 PHP5.6。3.可以看到 PHP 的市场占有率从 2002 年之后就已经比较客观了,但是从 2010 年开始有所下滑,现在市场占有率肯定不如 Java,但是能稳定在第四到第八名把,还算是一门很不错的编程语言。4.下面是 TIOBE 统计的编程语言榜单:5.PHP 的主要优势就是跨平台免费且开源,而且效率很高,简单易学。2014 年辛星 PHP 教程夏季版 7/169 *PHP 的历史*1.PHP 的历史比较悠久,在 1994 年由 Rasmus 创建,主要用于维护个
9、人网站,因此是 Personal Home Page,即个人主页的意思。2.1995 年 PHP 正式发布了它的 1.0 版本,在 1996 年 6 月 8日发布了 PHP2,截至 1996 年底,有 15000 个网站在使用PHP。3.1997 年,Zeev 和 Andi 重写了 PHP 的解析器,发布了PHP3。4.2000 年 5 月 22 日正式发布 PHP4,在 2004 年 7 月 13 日正式发布了 PHP5。2008 年 PHP5 成为了唯一开发的版本,PHP6 正在开发中。*开发环境的搭建*1.如果你是新手,我还是建议用集成开发环境,如果您是老手,那就随意了。2.PHP 的集
10、成开发环境还是挺多的,我还是推荐 wamp,大家可以到 http:/ 年辛星 PHP 教程夏季版 8/169 3.然后傻瓜式的安装,最后会有一步选择默认浏览器,选择自己喜欢用的就好,我喜欢用的就是谷歌浏览器。*开始*1.然后我们运行 wamp,在它的托盘上右键点击,其中有个语言的选项,可以选择自己喜欢的语言,不过建议选择chinese。2.然后我们左键单击该托盘,点击 www 目录进入它:2014 年辛星 PHP 教程夏季版 9/169 3.然后我们可以新建一个 my.php,输入如下内容:4,保存之后,在浏览器中输入 http:/localhost/my.php,截图如下:2014 年辛星
11、PHP 教程夏季版 10/169 5.整个运行过程简单把,我们写完一个 php 文件之后可以立即运行,无需任何的编译过程,可以直接在浏览器中查看。2014 年辛星 PHP 教程夏季版 11/169 第一节:变量的数据类型以及赋值和运算*变量*1.绝大多数编程语言都支持变量这一概念,我们用变量表示那些可变的量。2.PHP 中的变量名以$符号开头,这一点受 Perl 的影响,PHP 中的变量名可以是数字字母下划线的组合,但是建议以字母开头,以驼峰法命名(即每个单词的首字母大写)。3.比如$a 和$aMan 都是合法的变量名,而且变量命名最好不要与关键字冲突,虽然前面加了一个$符号,但是这样也容易引
12、起歧义。*注释*1.注释里面的内容是不会被解释执行的,只是让我们来看的。2.注释可以分为单行注释和多行注释,单行注释有 C+风格的/,在两个斜线后面的内容到这一行结束会被当做注释,不会被执行。3.单行注释还支持 shell 风格的#注释,在#号之后到这一行结束也不会被解释执行。4.它还支持多行注释,即 C 语言风格的,以/*开头,以*/结尾,中间的内容会被当做注释。5.看下面截图:2014 年辛星 PHP 教程夏季版 12/169 *数据类型*1.PHP 的基本数据类型如下:第一类是布尔类型(boolean),取值只有两个即真和假,真为 True,假为 False。第二类是整数类型(int),
13、取值即整数,包括正整数、0和负整数。第三类是浮点型(float),由于其他语言中会分为单精度和双精度,即 float 和 double,但是在 PHP 中只有一个,就是 float。第四个是字符串类型(string),它可以用单引号括起来,也可以用双引号括起来,都表示字符串。2.下面是程序的执行截图(我们可以使用 var_dump 这个函数来查看该变量的数据类型和其值,至于函数,我们后面会讲的):2014 年辛星 PHP 教程夏季版 13/169 3.PHP 的赋值使用等号,我们上面就进行了多次赋值,每次赋值都是一个语句,都必须在其后使用分号与其他语句进行分隔开。*运算*1.数据之间可以运算,
14、PHP 也支持大多数运算符,其实我不建议大家记忆某些语言专属的运算符,容易混乱。2.数值类型(即整数和浮点数)之间可以进行加(+)、减(-)、乘(*)、除(/)、取模(%)等运算。3.其中取模可以理解为我们小学的时候的余数,即被除数除以除数得到商和余数,这里的余数就是取模得到的结果,比如 5 除以 2 商 2 余 1,则 5%2 的结果就是 1.2014 年辛星 PHP 教程夏季版 14/169 4.布尔值之间可以进行逻辑运算,两个布尔变量可以进行与运算(&),或运算(|),单个布尔变量还可以进行非运算(!)。5.两个布尔变量进行与运算的时候,只有都为 True,运算结果才为 True,两个布
15、尔变量进行或运算的时候,只要有一个变量为 True,则运算结果就为 True。6.程序运行截图如下;7.字符串可以用“.”号进行拼接,如下代码示例:2014 年辛星 PHP 教程夏季版 15/169 *比较运算符*1.PHP 还支持比较运算符,比如=表示是否相等,它的左边和右边各有一个变量,如果相等,则运算结果为 True,否则为 False,而=则要求不两个变量不仅值要相等,还要类型相同才返回 true。2.=要求左边的变量大于右边的变量才返回 True,=要求左边的变量小于右边的变量是返回 True,而!=则是在两者不等时返回 True.3.比较运算符的运算结果都是布尔值,比如如下代码示例
16、:*简化了的运算符*1.有时候我们会简化运算符来方便书写,比如我们用$a+代替$a=$a+1,用$b-来代替$b=$b-1。2014 年辛星 PHP 教程夏季版 16/169 2.还有就是复制运算符可以于加减乘除和取模连用来得到其简化形式,比如$a+=5 表示$a=$a+5;其他的-=,*=,/=,%=都是类似的。3.PHP 还支持所谓的三目运算符,它多用于复制运算,包括一个?和一个:如果问号前面的值为真,则取值为问号和冒号中间的值,否则取值为冒号后面的值,看如下代码及运行效果:*总结*1.本小节我们学习了变量的赋值和简单运算,还了解了变量的四种基本数据类型。2.如果读者有其他语言的基础,将会
17、非常快速的入门,如果没有其他语言基础,也不要着急,多看几遍,多跟着代码敲几次,很快就会熟悉的。3.如果感觉本小节课程写的哪里又不好之处,请联系我:,谢谢。2014 年辛星 PHP 教程夏季版 17/169 第二节:流程控制结构*程序执行顺序*1.上面我们一直没有讲到的一点就是我们的程序是如何执行的,但是大家从第一节的示例代码中大致可以感觉到,我们的代码是从上向下执行的。2.没错,它不像 C 语言那样从 main 函数开始执行,而我们的 PHP 脚本包括 Python 脚本都是从上向下执行的,而不是从某个特定的函数开始执行。3.那么我们能够改变它的执行流程呢?答案是可以的,那我们通常包括顺序结构
18、、选择结构和循环结构这三种控制程序执行顺序的结构。*选择结构*1.所谓选择结构,既然要选择,就要进行判断,我们大多数编程语言都是支持 if 作为选择结构的起始的。2.即我们先写一个 if,然后跟一个布尔值,如果该布尔值为真,则执行后面的代码,否则则跳过后面的代码,代码示例如下:2014 年辛星 PHP 教程夏季版 18/169 3.上面的结果我们判断一个条件,如果满足条件,则执行相应的功能,那么如果不满足的时候我们想执行另一条功能该怎么办呢?4.万能的 PHP 提供了 else,来提供当我们的 if 条件不满足的时候想执行某些功能的情况:2014 年辛星 PHP 教程夏季版 19/169 5.
19、用于的要求是苛刻而残忍的,有时候我们要求使用多个判断,我们可以使用多个 if 嵌套的方式,即在 else 里面再次用 if 进行判断,但是势必会造成代码膨胀,伟大的PHP 提供了更丰富的形式:*语句块和语句*1.不知道是否我们的读者对这个大括号的使用会存在疑问,如果没有疑问,那么说明您有过类 C 语言的基础,如果有的话,下面我来解释一下。2.我们知道,一条语句就是一个独立的功能,一次赋值是一个语句,echo 一个内容也是一个语句。3.但是有时候我们需要多个语句一起使用,于是就有了语句块,它可以把多个语句当成一个语句的功能。2014 年辛星 PHP 教程夏季版 20/169 4.比如我们 if
20、语句后面的大括号就是一个整体,如果 if判断的结果为真,那么该大括号里面的所有内容都会被执行,否则,都不会被执行。5.简单来说,大括号的作用就是把它们捆绑为一个整体,而且 if 和 else 结构是可以嵌套的,下面给出一个例子:6.良好的代码书写习惯是很重要的,它可以让你的代码更清晰,让别人读起来更舒服,如果写成如下格式,你是不是看了就头皮发麻(虽然功能是一样的):2014 年辛星 PHP 教程夏季版 21/169 7.我相信大家是可以读懂上述代码的,因为它很简单,但是它确实有些地方让人费解,如果大家学习过 Python,那么会不由自主的用四个空格缩进,不轻易换行,因为Python 对格式要求
21、记为严格。*循环*1.我们都很烦做同样的事情,比如小学时候老师的“把某某段落抄五遍”,明明抄一遍就可以了,感觉做同样的事情好烦啊,做同样而无聊的事情就更是烦上加烦。2.没错,使用循环结构可以让您从烦闷中解脱出来,我们使用循环结构来做类似的事,在 PHP 中,循环分为 while循环和 for 循环,那么它们通常怎么用呢?3.先来说 while 循环,它的核心思想就是:如果条件满足,则一直做某件事,它的语法结构和 if 很像,当然,内部的2014 年辛星 PHP 教程夏季版 22/169 执行机制是两码事。它也是后面跟一个逻辑值,如果该值为真,则一直做某件事。4.下面是代码示例,我们用一个变量,
22、$a 来控制数据的大小,然后判断它的值,如果它不大于 13,则执行大括号里面的内容,如果它大于 13,则自动向下执行:5.我们看到,while 后面跟一个小括号,里面写各种逻辑运算,但是得到的结果是一个布尔类型的值或者是可以转型为布尔类型的值,然后跟一个大括号,这个大括号里面的内容通常被称为循环体。6.for 循环则是一个更加强大的循环,PHP 的 for 循环和 C的 for 循环很像,和 Python 的 for 循环差距就有点大了,下面我们先看一个例子:2014 年辛星 PHP 教程夏季版 23/169 7.我们可以看到 for 循环的大括号里就是该 for 循环所做的工作,它首先打印出
23、包含该$a 的值的一个文本,然后判断时间,如果是九点之前,小倩应该陪着辛星在编程的,如果是九点之后,小倩就睡觉去了,小星自己在编程。8.感觉这个循环讲解的还明白吗?如果不明白就对着代码敲一下,梳理一下思路。2014 年辛星 PHP 教程夏季版 24/169 *三大杀手*break*conitue*return*1.在学习完毕上面讲解的几种结构之后,我们来看一下三大杀手,它们是 break、continue 和 return。2.这三个语句通常用在循环中,不管是 while 循环还是 for循环都可以用,我们下面的例子都以 for 循环为例,while循环的例子大家可以自己去仿造,当做课下作业把
24、,(_)。3.首先从最简单的 break 开刀,它翻译成中文就是“打破”,即打破循环,从循环中跳出,先看一段代码:4.这里我们突然明白了,原来 break 的意思就是说,我break 一下,就跳出了循环,于是程序继续向下执行,大家2014 年辛星 PHP 教程夏季版 25/169 应该看明白了吧,就是我用 break 外加一个分号跳出循环,是不是很简单呢?5.然后就是从第二简单的 continue 下手,它的意思是“继续”,即跳过本次,重新来过,先看如下代码示例:6.看完上面代码的示例和执行效果,我们一下明白了,奥,原来 continue 的作用就是跳过本次循环,但是并没有跳出本次循环,即本次
25、循环继续进行,但是当$a 取值为 8 的时候,这一次我们到此为止,不想下执行了,我们从$a 为 9继续开始循环。2014 年辛星 PHP 教程夏季版 26/169 7.然后就是 return,其实 return 的意思是“返回”,它主要是出现在函数中,用于返回一个值,或者直接声明该函数的结束,但是它却有着更加强大的作用。8.如下代码示例及其执行效果:9.我们发现上面当$a 取值为 8 的时候,使用了 return,我们发现它不仅跳出了循环,而且循环之后的输出也没有得到执行,说明了一点,那就是 return 会直接跳出整个程序的执行。2014 年辛星 PHP 教程夏季版 27/169 *几点答疑
26、*1.如果你读完上面的代码,没有下面的疑惑,要么说明你是个老手,这些都明白了,要么说明这些细节还不够注意。2.我前面强调,我们用 echo 输出字符串信息的时候的$a 后面要跟一个空格,那么不跟空格会有什么后果呢?3.我们来运行看一下:4.还有就是我多次用输出,其实是输出了一个换行,我们的浏览器会自动换行:2014 年辛星 PHP 教程夏季版 28/169 *总结*1.本小节我们学习了如何去书写应用程序的执行流程,即默认 PHP 的执行顺序是从上到下的瀑布式的执行方式。2.但是我们可以用 if elseif else 这样的选择结构来进行选择式的执行,还可以用 while 和 for 来重复执
27、行。3.然后学习了 continue 和 break 和 return 的用法,我想大家通过上面的例子应该可以很轻松的掌握他们。*反馈*1.如果您对本教程有什么看法,或者您也想参与到本教程的编写中来,或者有什么想对我说的话,都可以发送邮件至 。2.辛星 PHP 教程,打造最完善的教程,从最简单的语法,到后面的框架,再到后面的缓存并发并一系列教程,期待您的关注。3.我们的特色:更新更全更实用。2014 年辛星 PHP 教程夏季版 29/169 第三节:函数*函数的起源*1.函数的起源非常之久远,远到历史比我还大,在二十世纪七十年代流行的 C 语言就有了函数,那时候我爸爸也才十几岁。2.函数一般包
28、括如下几个部分:函数名,它就像变量名一样,各个函数名之间不能重复取名,否则容易导致混乱。函数体,它和循环结构的循环体一样,用于执行该函数的实际功能。3.函数还能体现结构化编程的思想,这点等本小节结束了我们再说。*函数的创建和调用*1.在 PHP 中,我们声明一个函数的格式如下:先使用一个function 来声明这是一个函数,然后跟几个空格,然后跟着的是函数名,我们调用该函数的时候需要用到该函数名,然后它后面跟一个小括号,然后括号内书写需要用到的变量名,然后后面跟一对大括号,在大括号内书写函数的具体功能就 OK 了。2.看完上面的一堆,我们来实例代码演示一下吧:2014 年辛星 PHP 教程夏季
29、版 30/169 3.感觉上面的图片已经把我想说的都说了,这就是一个很基本的函数,它使用 function 来说明自己是一个函数,用xin 作为函数名,我们可以通过函数名来调用它,大括号里面可以使用小括号里面传进来的参数。*函数的参数*1.上面我们说了函数带有一个参数的情形,那么函数是否可以没有参数呢?函数有多个参数的时候又该怎么办呢?2.对于没有参数的情形,我们在小括号内什么都不用写,如下代码示例:2014 年辛星 PHP 教程夏季版 31/169 3.对于传递多个参数的时候,我们在定义函数的时候,在小括号内用逗号把它们分隔开来,在函数体内可以使用这些参数,比如如下示例代码:2014 年辛星
30、 PHP 教程夏季版 32/169 4.有时候我们可以给参数指定默认值,当存在参数指定默认值的时候,它遵循“右先原则”,即右边的参数优先有默认值,即永远不要出现那种左边的参数有默认值,但是它右边的参数没有默认值。5.在定义函数的时候使用默认值,我们在该参数中加一个=号后跟它的默认值即可,如下示例:2014 年辛星 PHP 教程夏季版 33/169 6.还有所谓的形参和实参的说法,这些多半是研究 C 和 C+的人喜欢说的话,因为 C+对于内存管理方面给了程序员较大的控制权,还有部分 Java 的人喜欢这么说,其实在脚本语言中没必要刻意去区分这些概念。7.所谓形参,即形式参数,即我们在定义函数中的
31、$a,$b这种都成为形参,而实参即参数的实际值,比如我传递的“辛星”和 23 都是实实在在的数据,被称为实参。*返回值*1.上面我们编写的函数都木有返回值,所谓返回值是一个函数执行完某些功能之后,得到一个数据,然后用 return返回给我们,而我们调用该函数的时候,也可以用赋值号来接受该数据或者直接让该数据参与运算。2.比如我们在下面定义了一个 add 函数,它的功能很简单,就是把它接受的两个参数相加,然后返回:2014 年辛星 PHP 教程夏季版 34/169 3.既然函数的返回值是一个数据,那么它自然可以用于赋值、用于 echo 的显示,当然也可以作为参数传递给另一个函数。*函数库和结构化
32、编程*1.PHP 本身自带了一个庞大的函数库,不过我不用 PHP 有一段时间了(最近一直在用 Python,最早用 Java,后来用过一段时间的 C+),所以有些 PHP 函数的细节已经记不清了。2.不过没关系,我会出出一个专门介绍 PHP 函数的教程的,大约在该教程写完之后吧。3.结构化编程 SP(Structure Program),它的核心思想就是函数调用的方式,把一个大的任务分解为若干个函数调用,每一个函数又可以调用其他的函数,等等。2014 年辛星 PHP 教程夏季版 35/169 第四节:数组和字符串*内置数据类型*1.各种编程语言的数据类型差别很大,以我的经验来看,PHP 的数据
33、类型算是最简单的,它没有诸如 C 那样的结构体、也没有 Pascal 那样的记录、还没有 Python 那样的列表和字典,PHP 拥有的数据类型基本上其他语言也都包括。2.当然我们可以用 C 语言去扩展 PHP,但是它超出了本教程的范围,在后续版本中我们会不断完善,期待您的关注。*数组*1.所谓数组,就是一组数据,不同的数组通常有不同的名字来彼此区分。数组有下标,它的下标就是用于区分这组数据的一个标识,因此数组的下标不能重复。数组中的元素的值可以重复,可以取遍所有的类型。2.C、C+、Java 这样的强类型语言都是要求数组中存储的数据的结构是一样的,而且下标都得是从 0 开始的数字,这和数组使
34、用一块整齐的内存存放有关系的,它可以根据序号直接定位到相应的内存地址,从而查找非常快。3.PHP 这种脚本语言当然不要求数组中必须存放相同类型的数据了,而且 PHP 的下标可以是数字,也可以是字符串,如果下标是数字,则是索引数组,如果下标是字符串,那么则数组是关联数组。*数组的创建和单个元素的使用*1.我们可以用 array 函数来快速的创建一个数组,比如下面就创建了一个具有三个元素的索引数组,这里我们没有指定数组的下标,它默认使用数字作为下标:2014 年辛星 PHP 教程夏季版 36/169 2.在 array 函数创建数组的时候,我们还可以指定数组的下标,比如我们用下面指定了下标:3.有
35、时候我们想使用单个元素,那么可以用数组名加中括号再加上下标的形式来得到它所对应的数据,比如说:2014 年辛星 PHP 教程夏季版 37/169 4.上面我们使用的是用字符串当做索引的数组,前面也说过了,数组还可以用数字作为下标,如果我们用 array 函数的时候,不指定下标,直接使用值来创建一个数组的情况下,它默认使用的是数字作为下标,且数字从 0 开始。5.我们可以用 数组名下标序号 的方式来操作该值,它既然是一个值,也可以进行赋值,运算,当做函数参数啦等等一些列普通数值可以干的工作,不过我们这里的示例给的有点偏简单了:2014 年辛星 PHP 教程夏季版 38/169 6.如果是数字作为
36、下标的情形,我们可以直接使用数组名加一个中括号来表示向后添加元素,如下:2014 年辛星 PHP 教程夏季版 39/169 *多维数组和数组函数*1.上面我们所说的都是一维数组,其实数组可以是多维数组,其实说白了很简单,就是当数组的元素也是一个数组的时候。2.下面就创建了一个二维数组,然后修改了其某一个值:3.其实多维数组的使用也是很简单的,我们先用下标定位到它的元素,因为得到的仍然是一个数组嘛,所以继续用下标定位即可,只要思路清楚了,实现起来,(o)。4.其实 PHP 给我们内置了一些数组,比如 GET 数组,比如POST 数组,比如 COOKIE 等等,这些数组等我们涉及到的时候再讲解。2
37、014 年辛星 PHP 教程夏季版 40/169 5.PHP 还给我们提供了一些用于处理数组的函数,比如我们可以用 conut 来得到数组的元素个数:*字符串*1.所谓字符串,就是一串字符,如果大家没经历过 C+对于字符串的痛苦,是感受不到 PHP 中对于字符串使用的方便的。2.C+中为了兼容 C 语言,可以接受一个字符数组来作为字符串,还可以使用 string 来表示字符串,而 Qt 库使用QString,MFC 库有 CString,微软的 win32API 还有一个TCHAR 和 CHAR,还有以/0 结尾的,还有支持 Unicode 的宽字符集,总之,一句话,虽然大家都是字符串,但是非
38、常不统一,一个字,就是乱。3.PHP 中我们使用 string 来表示字符串,而且字符串可以用单引号括起来,或者是双引号括起来,都表示字符串。4.对于字符串的处理,函数就太多了,常见的比如有字符串的比较、字符串的替换和查找,当然,还有字符串的长2014 年辛星 PHP 教程夏季版 41/169 度,本教程并不是想做一个函数库,因此这一个版本暂不介绍了,对于这些函数,讲起来是很枯燥的,但是又很重要,因此我还是建议大家真正用的时候去搜把。5.这里只是举一个字符串长度的例子:6.下面说一下单引号表示字符串和双引号表示字符串的区别,那就是单引号表示的字符串在输出的时候不会进行变量的替换,但是双引号表示
39、的字符串在输出的时候会进行变量的替换,如下截图:2014 年辛星 PHP 教程夏季版 42/169 *小节*1.其实 PHP 的很基础的内容已经讲解的差不多了,当然你可能会说我自作主张的删掉了一些内容,没错,我确实根据自己的经验删掉了一些东西。2.我感觉只要抓住主干知识,进行学习,有些东西是可以用的时候再去了解的,只要主干梳理清楚了,学习任务就算完成了。2014 年辛星 PHP 教程夏季版 43/169 第五节:其他一些知识*require*include*1.有时候我们需要多个文件同时作用,那这个时候该怎么办呢?我们可以用 require 和 include,它们两个都有“包含”的意思,但是
40、 require 更偏向于“需要”,因此require 导入的文件不存在,2.使用 include 导入同文件夹下的 xin.php 文件:3.使用 require 导入同文件夹下的 xin.php 文件:4.但是当导入的文件不存在的时候,使用 require 的表现如下:2014 年辛星 PHP 教程夏季版 44/169 5.如果是 include 一个不存在的文件 on.php 的时候表现如下:2014 年辛星 PHP 教程夏季版 45/169 6.因此,在我们需要导入某些特别重要的文件的时候,如果导入不成功,就无法进行的,比如数据库连接,那么可以用 require,如果是某些可能不存在的
41、东西,比如页面的某个部分,可能不存在,那么就用 include。2014 年辛星 PHP 教程夏季版 46/169 *常量*1.前面我们学习了变量,那么接下来学一下常量。所谓常量,就是其值一旦给定,就不能变化。2.常量我们用 define 函数来定义,define 函数接受三个参数,第一个用于定义一个常量名,因此第一个参数是字符串类型,第二个用于定义它所表示的值,可能是任何类型,第三个是可选参数,表示是否忽略大小写,默认是取值为false 的,表示大小写敏感。3.下面是示例代码:2014 年辛星 PHP 教程夏季版 47/169 4.我们可以用 constant()函数来返回所定义常量名的数值
42、,可以用 defined()来判断一个常量是否已经定义,它接受一个常量名字符串,如下代码:*学习的重心*1.学习的重心在于掌握知识的系统性和完整性,完整性需要长时间的积累才能办到,比如我们对 PHP 函数的认识,显然不是一时半会能解决掉的。2.还有一点就是学习的系统性,很多人问我,我感觉自己也学习了很长时间,但是让我写一个网站,依然没什么思路,xxx 才学了半个月,怎么就写出来这么优秀的网站?是不是我太笨了?3.答案不是你太笨了,是你学习的过程太过于零散,这里学一点,那里学一点,到最后也不知道如何把它们集成到一起来做一个网站,但是 xxx 学习的非常系统,学习了主干知识,真正开发网站的时候再去
43、找一些资料,去填充一2014 年辛星 PHP 教程夏季版 48/169 下那些不太熟悉的领域,于是他很快就能搭建起来一个网站。4.因此,如果你跟着星哥学习,我的教程会给你一个系统的教学,至于知识的完整性,这就是一个长期积累的过程了,需要你的努力了就。2014 年辛星 PHP 教程夏季版 49/169 第二部分:PHP 在 web 中的应用 第零节:本部分内容简介*实战和理论的结合点*1.有些学习过程,比如学习游泳,比如学习骑自行车,这些东西多练就可以了,理论部分的东西很少,我想大多数人都已经游泳骑车非常熟练了(如果你不是职业游泳或者职业骑车),但是如果要给不会游泳和骑车的人讲点经验,也就几句话
44、的事,可能并没有长篇累牍的经验之谈。2.有些学习过程,比如绘画,比如音乐,可能有些人研究了一辈子,也没有达到登峰造极的地步,但是有些人,则是很快就少年成材,名扬四海,我记得有个美国少年 12 岁就已经可以闯入美国官网,虽然最后被告了,引起了犯罪,但是有些程序员一辈子也没有能力突破政府网站的铜墙铁壁。3.我们的程序员的学习,即没有游泳骑车那样不怎么用关注理论,实战决定一切的唯实战论,也没有音乐美术那么强烈的依靠灵感,更不像数学物理那么强力的依靠理论的支撑,它是一个实战和理论各半,但是偏向实战的领域。*本部分学习内容梗概*1.简单的使用 PHP 和 HTML 进行混合编程,为第三部分用PHP 编写
45、一个论坛做准备。2.我们本章不讲解 HTML 和 CSS 以及 Javascript 的知识,如果各位想要补习,可以参考其他教程或与我联系,咱们一起出一部这方面的教程。2014 年辛星 PHP 教程夏季版 50/169 3.掌握 PHP 在 web 应用中的主干知识,其实说白了,是基础知识,就是我们一般百分百会用到的,而对于那些锦上添花的,可用可不用的,本部分均不会涉及。4.具体内容主要就是对表单的操作,对数据库的操作,对COOKIE 和 session 的操作。5.有了这些知识,我们就可以去编写一个自己的网站了,虽然功能会比较简单一点。2014 年辛星 PHP 教程夏季版 51/169 第一
46、节:表单的使用以及 GET 和 POST*HTML*1.HTML 的历史我就不说了,我相信懂 HTML 的人也不在少数,因为它实在是太流行了,就像我们使用 word 打字一样频繁。2.HTML 现在基本使用 XHTML1.0,和 HTML4 的规范差不太多,关于 HTML5,到底它什么时候能够到来呢?我也蛮期待的。3.HTML 使用一个个的标签来表示它所拥有的元素,比如标签表示一个段落,比如表示一个图片,比如表示一块区域,这些都还算可以。*CSS*Javascript*1.CSS 文件用于书写 HTML 文件的样式表,可以内嵌到 HTML文件中,也可以单独写到外面。2.Javascript 的
47、历史也蛮悠久的,而且它的名字很容易让人想到 Java,其实它和 Java 没半毛钱关系,语法格式、执行方式都千差万别,如果真要说有点关系,那就是它的前四个字母是 Java,就比如某人叫叫辛星,有人叫辛星伟一样,前者的名字是后者的前两个字。3.我本人对 CSS 和 JS 还是很感兴趣的,希望有时间可以写一套关于前端设计的教程出来。*表单*2014 年辛星 PHP 教程夏季版 52/169 1.下面说一下表单,它是 HTML 中的一个标签,即和表示的部分,在这两个标签中可以写一些 input 标签,它们可以是输入框,也可以是单选框、下拉列表等等。2.表单可以可以有若干属性,这里说两个比较重要的,一
48、个是 method,它表示提交该表单的方式,分为 get 和 post,还有一个属性是 action,表示的提交该表单的地址。3.下面说一下 get 和 post 的区别,如果是 get 方式,那么提交的信息会在地址栏中显示,如果是 post 方式,那么提交的信息不会在地址栏中显示,因此会安全一些,而且大多数表单也都是用 post 方式提交的。4.PHP 中有两个预先定义的数组,即$_GET 和$_POST,分别表示使用 get 方法传递的数组和使用 post 方法传递的数组。它的下标就是表单中的 name 属性。5.下面是一个表单提交到本网页的示例,由于大多数都使用 post 方式,因此我们
49、这里直接用 post 方式示例,下面是初始情况:6.然后我们提交了内容之后,可以看到:2014 年辛星 PHP 教程夏季版 53/169 *GET 方式*1.使用 get 方式传递参数,我们可以直接在浏览器中输入即可。2.下面显示了 GET 方式传参的截图:2014 年辛星 PHP 教程夏季版 54/169 *说明*1.这里还是说一下把,使用 post 传参在表单中比较多见,而使用 get 传参多是用一些简单的信息。2.这里并没有加表单令牌,其实就是一个 token,也很简单,它可以防止表单的重复提交,大家可以自行百度一下。3.我们并没有讲解 HTML、CSS、Javascript 的知识,说
50、实话,我本人对前台的开发也不是很感兴趣,更喜欢去开发后台。*$_REQUEST*1.差点忘记提了,$_REQUEST 中会包括$_GET 和$_POST 中的所有内容。2.比如我们如下截图:2014 年辛星 PHP 教程夏季版 55/169 第二节:COOKIE 和 SESSION*Cookie*1.有时候我们服务器需要和多个客户端同时进行交互,而HTTP 协议又是无状态的协议,此时为了区分不同的客户连接,我们就需要用 Cookie 来区分不同的客户端。简单来说,Cookie 就是 web 服务器在用户硬盘上记录的一些信息。2.有时候我们重复进入某个网站的时候,不用登录账号密码即可直接登录,靠