- Dreamweaver+PHP+MySQL动态网站开发案例课堂
- 刘玉红
- 4759字
- 2021-03-26 19:27:48
3.3 PHP基本知识
PHP全名为Personal Home Page,是英文Hypertext Preprocessor(超级文本预处理语言)的缩写。PHP是一种创建动态交互性站点的强有力的服务器端脚本语言,PHP是免费的,并且使用广泛。
3.3.1 PHP语言的优势
PHP能够迅速发展,并得到广大使用者的喜爱,主要原因是PHP不仅有一般脚本所具有的功能,而且有它自身的优势。具体特点如下。
(1)源代码完全开放:所有的PHP源代码事实上都可以得到。读者可以通过Internet获得需要的源代码,快速修改和利用。
(2)完全免费:与其他技术相比,PHP本身是免费的。读者使用PHP进行Web开发无须支付任何费用。
(3)语法结构简单:因为PHP结合了C语言和Perl语言的特色,编写简单方便且易懂,可以被嵌入于HTML语言,它相对于其他语言,编辑简单,实用性强,更适合初学者。
(4)跨平台性强:由于PHP是运行在服务器端的脚本,可以运行在Unix、Linux、Windows等系统中。
(5)效率高:PHP消耗相当少的系统资源,并且程序开发快、运行快。
(6)强大的数据库支持:支持目前所有主流和非主流数据库,使PHP的应用非常广泛。
(7)面向对象:从PHP 5.5开始,面向对象方面都有了很大的改进,现在PHP完全可以用来开发大型商业程序。
3.3.2 PHP中的数据类型
从PHP 4开始,PHP中的数据类型不再需要事先声明。
不同的数据类型其实就是所储存数据的不同种类,PHP的数据类型主要包括整型、浮点型、字符串、数组、对象、Null、布尔型。
1.整型
整型(integers)是数据类型中最为基本的类型。在现有的32位的运算器的情况下,整型的取值范围是-2147483648~+2147483647。整型可以表示为十进制、十六进制和八进制。使用PHP var_dump()会返回变量的数据类型和值。
例如:
3560 //十进制整数 01223 //八进制整数 0x1223 //十六进制整数
2.浮点型
浮点型(floating-point)就是实数。在大多数运行平台下,这个数据类型的大小为8个字节。它的近似取值范围是2.2E-308 ~ 1.8E+308(科学记数法)。
例如:
-1.432 1E+07 0.0
3.字符串
字符串型的数据是表示在引号之间的。引号分为双引号“”和‘’单引号。这两种引号的表示方式都可以表示字符串。但是,这两种表示也有一定区别。双引号几乎可以包含所有的字符,但是,在其中的变量显示的是变量的值,而不是变量的变量名。单引号内的字符是被直接表示出来的。
4.数组
数组是PHP变量的集合,它是按照“键”与“值”对应的关系来组织数据的,数组的键可以是整数,也可以是字符串。默认情况下,数组元素的键为从零开始的整数。
在PHP中,使用list()函数或array()函数来创建数组,也可以直接进行赋值。
5.对象
对象是存储数据和有关如何处理数据的信息的数据类型。在PHP中,必须明确地声明对象,首先,我们必须声明对象的类,对此,我们使用class关键词。类是包含属性和方法的结构,然后,我们在对象类中定义数据类型,然后在该类的实例中使用此数据类型。
6.Null
Null类型是仅拥有NULL这一个值的类型。这个类型是用来标记一个变量为空的。一个空字符串与一个NULL是不同的。在数据库存储时,会把空字符串与NULL区分开处理。NULL值在布尔判断时永远为false。在很多情况下,在声明一个变量的时候,可以直接先赋值为Null空型。例如,$value = NULL。
7.布尔型
布尔型(boolean)只有两个值,就是true和false。布尔型是十分有用的数据类型,通过它,程序实现了逻辑判断的功能。
而对于其他的数据类型,基本都有布尔属性。
●整型:为0时,其布尔属性为false,为非零值时,其布尔属性为true。
●浮点型:为0.0时,其布尔属性为false,为非零值时,其布尔属性为true。
●字符串型:空字符串“”或零字符串“0”时为false,包含除此以外的字符串时为true。
●数组:若不含任何元素,为false,只要包含元素,则为true。
●对象型:资源型,永远为true。
●空型:永远为false。
8.数据类型转换
数据从一种类型转换到另外一种类型,就是数据类型转换。在PHP中,有两种常见的转换方式:自动数据类型转换和强制数据类型转换。
(1)自动数据类型转换:这种转换方法最为常用,直接输入数据的转换类型即可。
例如Float型转换为整数Int型,小数点后面的数将被舍弃。如果Float数超过了整数的取值范围,则结果可能是0或者整数的最小负数。
(2)强制数据类型转换:在PHP中,还可以使用settype函数强制转换数据类型。基本语法如下:
Bool settype(string var, string type)
注意
type的可能值不能包含资源类型数据。
3.3.3 PHP中的常量与变量
在PHP中,常量是一旦声明就无法改变的值。变量则像是一个贴有名字标签的空盒子。不同的变量类型对应不同种类的数据,就像不同种类的东西要放入不同种类的盒子一样。
PHP通过define()命令来声明常量。格式如下:
define("常量名", 常量值);
常量名是一个字符串,往往在PHP的编码规范的指导下使用大写的英文字符表示。比如CLASS_NAME、MYAGE等。
常量值可以为很多种PHP数据类型,可以是数组、对象,当然,也可以是字符和数值。
常量就像变量一样储存数值,但是,与变量不同的是,常量的值只能设定一次,并且无论在代码的任何位置,它都不能被改动。常量声明后具有全局性,函数内外都可以访问。
PHP的内置常量是指PHP在系统建立之初就定义好的一些量。PHP中预定了很多系统内置常量,这些常量可以被随时调用。
PHP中的变量不同于C或Java语言,因为它是弱类型的。在C或Java中,需要对每一个变量声明类型,但是在PHP中不需要这样做,这是极为方便的。
PHP中的变量一般以“$”作为前缀,然后以字母a~z的大小写或者下划线“_”开头。这是变量的一般表示。
合法的变量名可以是:
$hello $Aform1 $_formhandler
非法的变量名如:
$168 $!like
一般的变量表示很容易理解,但是,有两个变量表示概念比较容易混淆,这就是可变变量和变量的引用。
3.3.4 PHP中的运算符
PHP包含三种类型的运算符,即一元运算符、二元运算符和三元运算符。
一元运算符用在一个操作数之前,二元运算符用在两个操作数之间,三元运算符是作用在三个操作数之间的。
1.算术运算符
算术运算符是最简单,也是最常用的运算符。常见的算术运算符如表3.13所示。
表3.13 算术运算符
2.字符串运算符
字符运算符是把两个字符串连接起来,变成一个字符串的运算符。使用“.”来完成。如果变量是整型或浮点型,PHP也会自动地把它们转换为字符串输出。
3.赋值运算符
赋值运算符的作用,是把一定的数据值加载给特定的变量。
赋值运算符的具体含义如表3.14所示。
表3.14 赋值运算符
例如,$a-=$b等价于$a=$a-$b,其他赋值运算符与之类似。赋值运算符可以使程序更加简练,从而提高执行效率。
4.比较运算符
比较运算符用来比较其两端数据值的大小。比较运算符的具体含义如表3.15所示。其中,===和!==需要特别注意一下。$b===$c表示$b和$c不只是数值上相等,而且两者的类型也一样;$b!==$c表示$b和$c有可能是数值不等,也可能是类型不同。
5.递增递减运算符
PHP支持C风格的前/后递增与递减运算符,递增/递减运算符不影响布尔值。递减NULL值没有效果,但是递增NULL值的结果是1。
表3.15 比较运算符
递增递减运算符的具体含义如表3.16所示。
表3.16 递增递减运算符
6.数组运算符
PHP数组运算符用于比较数组,数组运算符的具体含义如表3.17所示。
表3.17 数组运算符
7.逻辑运算符
一个编程语言最重要的功能之一,就是要进行逻辑判断和运算。比如逻辑与、逻辑或、逻辑非都是这些逻辑运算符控制。逻辑运算符的含义如表3.18所示。
表3.18 逻辑运算符
3.3.5 PHP中的控制语句
PHP中的控制语句主要包括条件语句、循环语句等,其中,条件控制语句又可以分为多种条件语句,如if语句、switch语句等;循环语句包括while循环、do…while循环和for循环等。
1.if语句
if语句是最为常见的条件控制语句,也被称为单一条件分支结构语句。它的格式为:
if(条件判断语句) { 命令执行语句; }
这种形式只是对一个条件进行判断。如果条件成立,则执行命令语句,否则不执行。
2. if...else语句
如果是非此即彼的条件判断,可以使用if...else语句,该语句被称为双向条件分支结构语句。它的格式为:
if(条件判断语句) { 命令执行语句A; } else { 命令执行语句B; }
首先判断条件是否为真,如果为真,则执行命令语句A,否则执行命令语句B。
3.else if语句
在条件控制结构中,有时会出现多于两种的选择,此时,可以使用else if语句。它的语法格式为:
if(条件判断语句) { 命令执行语句; } else if(条件判断语句) { 命令执行语句; } ... else { 命令执行语句; }
4.switch语句
switch语句的结构像是给出不同情况下可能执行的程序块,条件满足哪个程序块,就执行哪个。它的语法格式如下:
switch(条件判断语句) { case 可能判断结果a: 命令执行语句; break; case 可能判断结果b: 命令执行语句; break; ... default: 命令执行语句; }
若“条件判断语句”的结果符合其中哪个“可能判断结果”,就执行其对应的“命令执行语句”。如果都不符合,则执行default对应的默认项的“命令执行语句”。
5.while循环语句
while循环在代码运行的开始检查表述的真假,while循环的结构为:
while (条件判断语句) { 命令执行语句; }
其中,当“条件判断语句”为true时,执行后面的“命令执行语句”,然后返回到条件表达式继续进行判断,直到表达式的值为假,才能跳出循环,执行后面的语句。
6. do...while循环语句
do...while循环则是在代码运行的末尾检查表述的真假,do...while循环的结构为:
do { 命令执行语句; } while(条件判断语句)
这里,将先执行do后面的“命令执行语句”,其中的变量会随着命令的执行发生变化。当此变量通过while后的“条件判断语句”判断为false时,就停止执行“命令执行语句”。
7.for循环语句
for循环的结构为:
for(expr1; expr2; expr3) { 命令执行语句; }
其中,expr1为条件的初始值,expr2为判断的最终值,通常,都是用比较表达式或逻辑表达式充当判断的条件,执行完命令语句后,再执行expr3。
8.foreach循环语句
foreach语句是十分常用的一种循环语句,它经常被用来遍历数组元素。其格式为:
foreach(数组 as 数组元素) { 对数组元素的操作命令; }
更为详细地,可以根据数组的情况,把foreach循环语句分为两种,即不包含键值的数组和包含键值的数组。格式如下。
(1)不包含键值的:
foreach(数组 as 数组元素值) { 对数组元素的操作命令; }
(2)包含键值的:
foreach(数组 as 键值 => 数组元素值) { 对数组元素的操作命令; }
每进行一次循环,当前数组元素的值就会被赋值给数组元素值变量,数组指针会逐一地移动,直到遍历结束为止。
3.3.6 PHP中的函数
函数的英文为function,这个词也是功能的意思。顾名思义,使用函数就是要在编程过程中实现一定的功能,也即是通过一定的代码块来实现一定的功能。
1.定义和调用函数
举例说,define()函数就是定义一个常量。如果现在再写一个程序,则同样可以调用define()函数。但是,更多的情况下,程序员面对的是自定义函数,其结构如下:
function name_of_function(param1, param2, ...) { statement; }
其中,name_of_function是函数名,param1、param2是参数,而statement是函数的具体内容。
例如,下面的代码中定义和引用了函数:
<?php function sayhello($customer) { return $customer.", 欢迎您来到GoodHome酒店。"; } echo sayhello('张先生');
值得一提的是,此函数的返回值是通过值返回的。也就是说,return语句返回值时,创建了一个值的副本,并把它返回给使用此函数的命令或函数(在这里是echo命令)。
2.向函数传递参数数值
由于函数是一段封闭的程序,很多时候,程序员都需要向函数内传递一些数据,来进行操作。有参函数的形式如下:
function 函数名称(参数1, 参数2) { 算法描述,其中使用参数1和参数2 }
例如下面的例子:
<?php function totalneedtopay($days, $roomprice) { $totalcost = $days * $roomprice; echo "需要支付的总价:$totalcost"."元。"; } $rentdays = 3; $roomprice = 168; totalneedtopay($rentdays, $roomprice); totalneedtopay(5, 198); ?> </BODY> </HTML>
以上述方式传递参数数值的方法,就是向函数传递参数数值。
其中,function totalneedtopay($days, $roomprice){}定义了函数和参数。不管是通过变量$rentdays和$roomprice向函数内传递参数数值,还是像totalneedtopay(5, 198)这样直接传递参数数值,结果都是相似的。
3.向函数传递参数引用
向函数传递参数引用,其实就是向函数传递变量引用。参数引用一定是变量引用,静态数值是没有引用一说的。在变量引用中已经知道,变量引用其实就是对变量名的使用。是对特定的一个变量位置的使用。
例如下面的例子:
<?php $fee = 300; $serviceprice = 50; function totalfee(&$fee, $serviceprice) { $fee = $fee + $serviceprice; echo "需要支付的总价:$fee"."元。"; } totalfee($fee, $serviceprice); totalfee($fee, $serviceprice); ?> </BODY> </HTML>
以上面的方式传递参数数值的方法就是向函数传递参数引用。使用“&”符号表示参数引用。其中function totalfee(&$fee, $serviceprice){}定义了函数、参数和参数引用。变量$fee是以参数引用的方式进入函数的。当函数的运行结果改变了变量$fee的引用的时候,在函数外的变量$fee的值也发生了改变。也就是函数改变了外部变量的值。
4.函数的引用
不管是PHP中的内置函数,还是程序员在程序中的自定义函数,都可以直接简单地通过函数名来调用。但是,在操作过程中也有些不同,大致分为以下3种情况:
●如果是PHP的内置函数,如date(),可以直接调用。
●如果这个函数是PHP的某个库文件中的函数,则需要用include()或require()命令把此库文件加载,然后才能使用。
●如果是自定义函数,若与引用程序同在一个文件中,则可直接引用。若此函数不在当前文件内,则需要用include()或require()命令加载。
对函数的引用,实质上是对函数返回值的引用。例如下面的例子:
<?php function &example($aa=1) { //定义一个函数,别忘了加“&”字符 return $aa; //返回参数$aa } $bb = &example("引用函数的实例"); //声明一个函数的引用$bb; echo $bb."<p>"; ?> </body> </html>
本案例首先定义一个函数,然后变量$bb将引用函数,最后输出变量$bb,实质上是$aa的值。与参数传递不同,对于引用来说,在定义函数和引用函数时,都必须使用“&”字符,表明返回的是一个引用。