对比C语言学习PHP.docx
- 文档编号:9199123
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:29
- 大小:36.03KB
对比C语言学习PHP.docx
《对比C语言学习PHP.docx》由会员分享,可在线阅读,更多相关《对比C语言学习PHP.docx(29页珍藏版)》请在冰豆网上搜索。
对比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”;
?
>
phpecho$type;? >”value=” phpecho$value;? >”/> —php文件结束—> 这个事例在浏览器上显示出一个按钮,按钮的内容写的是“提交”。 当我们查看网页原文件的时候,我们会发下如下html代码。 上边的php文件,共有3个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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对比 语言 学习 PHP