对比C语言学习PHP.docx

上传人:b****8 文档编号:9199123 上传时间:2023-02-03 格式:DOCX 页数:29 大小:36.03KB
下载 相关 举报
对比C语言学习PHP.docx_第1页
第1页 / 共29页
对比C语言学习PHP.docx_第2页
第2页 / 共29页
对比C语言学习PHP.docx_第3页
第3页 / 共29页
对比C语言学习PHP.docx_第4页
第4页 / 共29页
对比C语言学习PHP.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

对比C语言学习PHP.docx

《对比C语言学习PHP.docx》由会员分享,可在线阅读,更多相关《对比C语言学习PHP.docx(29页珍藏版)》请在冰豆网上搜索。

对比C语言学习PHP.docx

对比C语言学习PHP

PHP基础学习部分

目录:

一、PHP介绍

二、数据类型、运算符与表达式

三、最简单的PHP程序设计——顺序程序设计

四、选择结构程序设计

五、循环控制

六、数组的使用

七、函数

八、预处理命令

九、指针

一十、结构体与共用体?

PHP替代的形式

一十一、位运算

一十二、PHP网页交互

a)POSTGET

b)URL

c)表单文件上传

d)Sessions

e)Cookies

f)E-mail

一十三、附录php函数列表(转自w3school)

#输出函数

#正则表达式函数

#数学函数

#时间函数

#字符处理函数

#文件操作函数

#数据库函数

#Session函数

#其他函数

#图像处理函数(GD库内容不在常用函数手册内,请自行查找)

-----------------以下部分需要自己找参考资料学习在此列出方向-------------------

一十四、OOP(专业phper必会)

一十五、错误处理(专业phper必会)

一十六、异常

一十七、过滤器

一十八、DOM(专业phper必会)

一十九、设计模式(专业phper必会)

二十、框架(专业phper必会)

二十一、测试与文档编写(专业高级phper必会)

二十二、SQL(PHP标准库)(专业高级phper必会)

二十三、其他

一、PHP介绍

php、asp、jsp都是网站建设中的核心语言,是完成服务器端数据的验证整理、读取数据库、完成各项任务的程序设计语言。

虽然很不情愿,我不得不承认,它们都是脚本语言。

我们运行这些语言,不需要编译、链接。

我们还可以把这些语言插入到HTML文本中,服务器仍然能正常的解释它们。

在这里,我要讲的是PHP,不去过多的关注asp、jsp。

不过还是附带的提议下,告诉大家我们为什么选择php。

asp是微软公司开发的语言,所以……唉~没什么可解释的,稳定性差、只能运行于windows的IIS服务器平台。

jsp是个不错的语言,实际上它是Java的一部分,全称是Javaserverpage,也可以理解为是拿Java写的网页,效率很高、稳定性很强、兼容性也很好,但是在开发效率方面要比php逊色。

对于jsp我了解的也不是很多,就不在多说了。

php,是免费开源的脚本语言,多平台兼容性很好,开发效率高,稳定性强,语法亚很简介。

其实也是我第一个接触的程序设计语言,所以我很喜欢它。

目前有一种网站解决方案的绝配叫做LAMP,也就是Linux+Apache+Mysql+PHP(其实有3种P,PHP只是其中之一)。

他们都是开源且独立的,但是因为经常放在一起使用,所有之间的或作也越来越方便。

Linux作为一个安全性极佳、性能极强的操作系统,在LAMP中的最基层(你辛苦了!

)。

Apache则处在次基层的位置,提供网页访问的服务,当然他还要去解释PHP(你其实也很辛苦)。

Mysql是数据库软件,当然它的地位相比就没L和A重要了,Oracle也是不错的选择,他们都使用SQL语言。

那么不再废话说什么PHP的人才需求了,大家懂的,下面进入正题。

二、数据类型、运算符与表达式

本章与接下来的几章,我们将类比C语言去学习PHP的基本语法结构。

【数据类型】

同学们在使用C语言的时候,变量的数据类型应该困扰过大家一段时间,而在定义时去考虑使用什么类型的变量,每种类型的取值范围是多少,都是同学们写C程序的时候要考虑的问题。

在PHP中,我们不需要去指定每一个变量的数据类型,而是由PHP在运行过程中自动选择的。

在PHP中,共支持8中数据类型——整形(int)、浮点型(float)、字符串(string)、布尔型(bool)四种基本数据类型,数组(array)、对象(object)两种合成类型,空值(null)、资源(resource)两种特殊类型。

由于变量类型在php中比较松散,而且在需要的时候会自行或强制转换,在此不做过多的介绍。

【常量与变量】

变量:

PHP中的所有变量都是以$符号开始的。

在PHP中设置变量的正确方法是:

”$var_name=value;”PHP的入门者往往会忘记在变量的前面的$符号。

如果那样做的话,变量将是无效的。

让我们试着创建一个存有字符串的变量:

php

$str="HelloWorld!

";//创建一个变量并赋初值

echo$str;//输出变量

?

>

常量:

在php中使用define()函数定义常量。

如:

php

define(“PAI”,3.1415926)//常量的定义;

echoPAR;//常量的使用

?

>

在使用常量时候不可以加入变量符号$。

常量只能是基本数据类型。

常量的作用域相当于全局变量。

其实这种定义常量的方法叫做宏定义。

不是真正意义上的常量定义,但是个人觉得使用这个更好,可以有效地区分开变量与常量。

【字符串】

字符串类型的变量,实际上就相当于c语言的字符数组,只是现在以变量的形式出现了。

因此我们对字符串可以有一些更简单的操作,但是在字符串的遍历上却又多了几分麻烦。

在php中,字符串需要使用双引号或单引号进行范围限定。

拼接字符串:

在php中使用“.”并置运算符呢进行字符串的拼接

php

$say=“Iam”;

$name=“shl_ky”;

echo$say.“”.$name.“.
”;

//下一行的代码(没有备注符号)输出结果与上面这一行相同请自行理解原因

//echo“$say$name.
”;

?

>

这段代码将在浏览器上打印“Iamshl_ky.”
是html中的换行便签,html等内容在php中,我们应该把它们当做字符串对待。

在这里大致介绍两个php的string库函数,事先声明,我们不需要写任何引入库函数文件的代码!

strlen(字符串);返回字符串长度

strpos(字符串,关键字);字符串定位,返回查找的字符串第一次出现的位置,第一个字符的位置是0。

更多string函数在库函数表中查阅。

【算数运算符与算数表达式】【赋值运算符与赋值表达式(以下表格来自W3SCHOOL)】

算数运算符

运算符

说明

例子

结果

+

Addition

x=2

x+2

4

-

Subtraction

x=2

5-x

3

*

Multiplication

x=4

x*5

20

/

Division

15/5

5/2

3

2.5

%

Modulus(divisionremainder)

5%2

10%8

10%2

1

2

0

++

Increment

x=5

x++

x=6

--

Decrement

x=5

x--

x=4

 

赋值运算符

运算符

说明

例子

=

x=y

x=y

+=

x+=y

x=x+y

-=

x-=y

x=x-y

*=

x*=y

x=x*y

/=

x/=y

x=x/y

.=

x.=y

x=x.y

%=

x%=y

x=x%y

 

比较运算符

运算符

说明

例子

==

isequalto

5==8returnsfalse

!

=

isnotequal

5!

=8returnstrue

>

isgreaterthan

5>8returnsfalse

<

islessthan

5<8returnstrue

>=

isgreaterthanorequalto

5>=8returnsfalse

<=

islessthanorequalto

5<=8returnstrue

 

逻辑运算符

运算符

说明

例子

&&

and

x=6

y=3

(x<10&&y>1)returnstrue

||

or

x=6

y=3

(x==5||y==5)returnsfalse

!

not

x=6

y=3

!

(x==y)returnstrue

除并联运算符外,所有运算符均与C语言一致。

三、简单的PHP程序设计——顺序程序设计

学过C语言之后,我们应该不用再去解释什么是顺序结构了吧?

现在我们来认识一下PHP顺序结构程序的一些需要注意的内容。

【PHP程序的入口】【声明PHP程序】

其实,我们看到这里,应该已经发现什么是php程序的入口了。

那就是“

php?

>”或者”

?

>”。

在这个符号之间的部分就是我们的php程序了。

这也是php作为脚本语言的特点。

在php中没有像C/C++一样的主函数入口。

在服务器解释php文件的时候,会忽略掉其他非php内容,当做字符进行处理,当遇到”

php”或者”

”的时候,开始去解释随后的php程序,而php程序结束的标志就是”?

>”。

按顺序解释下去,直到php文件结束。

在一个php文件中,php程序是可以分块出现的。

请看看下边这个事例:

—php文件开始—>

php

$value=“提交”;

$type=“button”;

?

>

认识php程序的入口

phpecho$type;?

>”value=”

phpecho$value;?

>”/>

—php文件结束—>

这个事例在浏览器上显示出一个按钮,按钮的内容写的是“提交”。

当我们查看网页原文件的时候,我们会发下如下html代码。

上边的php文件,共有3个php程序块。

对比上面的php文件,是不是基本一样?

请同学们自己思考理解。

—php文件开始—>

认识php程序的入口

—php文件结束—>

思考:

如果php有一个循环,我么能不能在循环体中使用”?

>”结束php程序块?

如果可以,你觉得应该是怎样的操作?

如果不可以,为什么?

【赋值语句】

看了上面那么多代码,这个不用再讲了吧?

跟C是一样的。

【输入输出】

上面的代码,告诉我们,在php中我们一般使用echo进行输出。

但是如果我们想按一定格式输出呢?

拜托!

不要被c语言printf()局限成这样好不好啊!

比如我们有三个名为year,month,day的变量,要按照“年-月-日(换行)”的格式输出。

在c语言里我们写printf(“%d-%d-%d\n”,year,month,day);

在php中,我们只要按下面两种方式这样写就可以了!

①echo“$year-$monty-$day
”;

②echo$year.“-”.$month.“-”.$day.“
”;

哈哈,上面的第一种方式是不是看起来特别简单啊?

不过遇到下面的情况,你觉得会得到什么结果呢?

php

$name=“shl_ky”;

$name1=“SunHongling”;

echo“Mynameis$name1”;

?

>

这段代码所得到的结果是:

Mynameisshl_ky1

如果把上面第三行代码改写成echo“Mynamesis${name1}”;输出结果就是我们想要的那个了。

另外,在php中负责输出的还有print()函数。

而print_r(变量)则按一定格式输出变量的类型及其内容,在检查逻辑错误的时候其效果很好。

四、选择结构程序设计

其实,我愿意把程序设计的结构分成3个级别,分别是最近本的顺序结构,判断一下再往下走的选择结构,再有判断一下要不要兜几圈的循环结构。

那么下面我来介绍一下php中的选择结构。

其实PHP中的选择结构跟C程序中的语法结构是一样的,我们可是使用ifelse或者switch来完成选择结构。

书上说if语句有3种形式:

①if(条件){}

②if(条件){}

else{}

③if(条件){}

elseif(条件){}

else{}

但是,请大家仔细看看这3中形式,再去仔细想想“复合语句”,第二种形式和第三种有没有本质的区别?

变化在哪?

如果想明白,对你理解程序的语法结构会有很多帮助。

给一个实例,下面的代码进行权限的判断,如果具有该权限,那么权限的变量值为真,可以进行操作,如果为假,则提示错误。

php

$IsAdmin=true;

if($IsAdmin){

echo“欢迎您,管理员!

”;

}

else{

echo“您不具备登陆后台的权限!

”;

}

?

>

那么现在再通过实例的方式展示一下switch的用法(跟C语言是一致的):

php

$score=91;//百分制分数

switch((int)($score/10))

{

case10:

case9:

$mark=“A”;

break;

case8:

$mark=“B”;

break;

case7:

$mark=“C”;

break;

case6:

$mark=“D”;

break;

default:

$mark=“NP”

break;

}

?

>

在C语言里,91/10的结果是9,我想大家的印象非常深刻,因为我们使用的整形变量。

在php中,我们没有声明变量的类型,而变量类型也可以随时转换,那么根据系统的需要,$score/10在计算过程中会自动转换成浮点型,那么不利于这个程序的判断,因此我们使用(int)语句将计算结果强制转换成整形。

五、循环控制

与C语言相同,php的循环控制语句有goto语句、for语句、while语句以及do…while语句。

用法与C语言完全相同。

在此不再对这些语句进行详细的介绍。

下面用实例向大家展示一下for语句和while语句。

goto不推荐使用。

php

//for循环这个方法可以按000111的格式输出编号虽然不是最简方法

$no=111;//获取一个编号

for($temp="",$i=0;$no*pow(10,$i)

{

$temp.="0";

}

echo$temp.$no;

//while循环完成上述功能

$no=111;

$temp=“”;

$i=0;

while($no*pow(10,$i)

{

$temp.=“0”;

$i++;

}

echo$temp.$no;

?

>

实际上,在php中还有一个非常重要的循环,也是在php中用到最多的循环——遍历数组(foreach语句),这个语句将在下一章具体说明。

六、数组的使用

数组是非常重要的一种数据结构,也是很重要的一个工具。

NOW!

我们来看看PHP中的数组跟C语言的数组有何异同。

学习使用php数组的方法。

【数值数组】

关于数值数组,就是下标为0、1、2、3……的数组,同样也可以理解为下标变量。

在php中,就像不必声明变量一样,我们同样也不必声明数组。

所以,数组是没有上限的,不存在数组越界的错误。

在php中,数组是一种变量的类型,为了明确某一变量是数组类型,我们可以使用下面的语句进行声明:

$MyArray=array();

其实我也不确定,php中的array()是函数还是关键字,因为在php中没有多态,不能对函数进行重载,而下面代码的形式用来初始化数组。

——这段话听不懂以后再说,重点是下面的代码用来初始化数组。

(w3school把array()当做函数)

$MyArray=array(“苹果”,“鸭梨”,“香蕉”,“橘子”);

我们没有指定数组的下标,那么就会以默认的方式进行分配(0~n,类似C语言):

$MyArray[0]储存的“苹果”$MyArray[1]储存的“鸭梨”……

值得注意的是,我们的数组初始化后,就只能容纳4个元素了吗?

不是这样的,我们可以继续为数组添加元素。

使用下面的代码向刚才的数组新增一个元素:

$MyArray[]=“石榴”;

这个新增元素的下标会自动分配,$MyArray[4]。

当然我们可以指定一个下标来储存我们的元素。

如果指定的下标在数组中已存在,那么就相当于是原有的数组元素。

如果指定的下标在数组中不存在,那么就会插入该下标,并储存元素。

我们加入如下代码:

$MyArray[8]=“葡萄”;

那么此时,数组新增了下标为8的元素“葡萄”$MyArray[8]。

是不是很疑惑?

那下表为5、6、7的元素呢?

其实现在并不存在下标为5、6、7的数组元素。

但是当我们再次插入新的指定下标的元素时,如插入下表为5的元素,数组会自动填充到相应的位置。

另外,在php数组中,每个元素的变量类型是可以不同的!

这时候也许你会发现“php的数组好乱啊”。

而且会问“那我怎么才能遍历整个数组呢?

”,“我怎么才能知道我的数组有多少元素呢?

”,这些问题,我们留到本章后面来介绍。

带着你的疑惑继续往下看吧。

【多维数组】

二维数组,就是保存数组的数组,我希望大家能这样理解,不要去找什么二维坐标啦什么的去理解这个,因为找对象对号入座的理解方式不利于大家对多维数组的理解。

那么我们以二维数组为例,介绍多维数组。

有如下数组的初始化语句:

$MyKitchen=array(

array(“苹果”,“鸭梨”,“香蕉”,“橘子”),

array(“白菜”,“茄子”,“萝卜”,“芹菜”)

);

这个语句初始化了一个数组(我在这里不强调它是二维数组,只需要知道它是一个数组就可以了)——$MyKitchen,这个数组有两个元素,分别是$MyKitchen[0]和$MyKitchen[1]。

我们可以把$MyKitchen、$MyKitchen[0]、$MyKitchen[1]看做三个变量。

只是$MyKitchen[0]和$MyKitchen[1]属于我们的数组变量$MyKitchen而已。

而对于$MyKitchen[0]、$MyKitchen[1]这两个变量,每一个变量又以同样的方式保存了另外一个数组:

$MyKitchen[0]=array(“苹果”,“鸭梨”,“香蕉”,“橘子”);

也就是说我们的$MyKitchen数组保存了其他的数组。

此时,最底层的数组就是我们上一节介绍的一维数组,第二层的就是二维数组,由此可以推广到n维数组(多维数组)。

请仔细考虑此节介绍的多维数组的概念,务必要弄明白。

这样再做程序设计的时候会轻松很多。

想到《倚天屠龙记》里的内容,我希望同学们忘掉多维数组的概念,熟练的理解数组里的元素是什么类型的,在实际的应用中这点最重要。

【关联数组】

说到关联数组,我不得不说,这是php里很赞的地方。

这个东西在我们使用php的时候提供了很多便利。

那么什么是关联数组?

C语言中有没有这个东西?

首先举一个例字,是上一节中的事例:

$MyKitchen=array(

array(“苹果”,“鸭梨”,“香蕉”,“橘子”),

array(“白菜”,“茄子”,“萝卜”,“芹菜”)

);

从程序的思路上我们不难看出,$MyKitchen[0]是水果的数组,$MyKitchen[1]是蔬菜的数组,可是这是用我们人的大脑总结出来的!

在我们的程序中看起来并不直观。

那么我们能不能用$MyKitchen[“水果”],$MyKitchen[“蔬菜”]来表示这两个元素呢?

这个表示方式是正确的!

而且能够直观的告诉我们每一个元素的意义!

这里的“水果”、“蔬菜”就叫元素的“键”(Key),它是一个字符串,之前我们讲数组的下表,也是键。

每个元素都可以看作由两部分组成Key=>Value(中间的符号叫什么我忘了)。

这就是关联数组。

下面的代码用关联数组初始化上面提到的二维数组:

$MyKitchen=array(

“fruit”=>array(“苹果”,“鸭梨”,“香蕉”,“橘子”),

“vegetable”=>array(“白菜”,“茄子”,“萝卜”,“芹菜”)

);

【遍历数组】

之前讲的内容,在php中,我们的数组功能变得相当强大了,但是比C语言里的数组乱了许多,我们的下标不再仅仅是0、1、2、3……了,而且最大下标也不一定,甚至可以是一个空的数组。

我们想按照C语言的方法去遍历数组显然是不给力了~用for循环我们甚至没法去访问数组中的每一个元素,这可怎么办啊?

在之前的章节中,我们提到了使用foreach()去遍历数组。

下面我们来看看foreach语句的用法:

foreach($Arrayas$Value)

{

//这是一个循环遍历数组

//第一次进入循环时有一个元素指针指向数组的首元素

//之后每次循环之前元素指针自动后移

//如果是已经是最后一个元素那么跳出循环

}

用这个方式,我们就可以遍历我们这个凌乱的数组了。

但是关联数组的强大,有时候我们需要获取键名,同样是使用foreach()循环:

foreach($Arrayas$Key=>$Value)

{

//跟上一段代码类似这里的$Key就是当前元素的键名

}

这里讲的foreach()和for()while()循环一样都是循环结构使用的关键字。

 

【其他数组操作】

函数名

说明

count()

求数组元素个数

array_combine()

通过合并两个数组来创建一个新数组。

key()

函数返回input_array中位于当前指针位置的键元素。

reset()

函数用来将input_array的指针设置回数组的开始位置。

current()

数组当前指针位置的数组值。

不移动指针。

next()

函数返回紧接着放在当前数组指针的下一个位置的数组值。

prev()

函数返回位于当前指针的前一个位置的数组值,如果指针本来就位于数组的第一个位置,则返回FALSE。

end()

函数将指针移向target_array的最后一个位置,并返回最后一个元素。

其实,数组的使用技巧还很多,更多的使用方式和技巧,就由大家自己去学习,去发现吧。

七、函数

我们用模块的思想或者是面向对象(OOP)的思想设计程序,经常使用或者完成一定功能的代码,我们把它们封装起来,在需要的时候直接调用,这就

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1