• 1. (本页无文本内容)
  • 2. 第3章 PHP的基本语法要更好地应用PHP脚本语言来进行动态网站的开发,先要熟知PHP语言的一些约定规则,这些约定规则就是本章所要介绍的基本语法,掌握了这些语法规则,就会在实际的应用开发过程中运用自如。 本章将从PHP的程序设计规范开始,分别讲述PHP的数据类型、PHP的运算符、PHP的条件语句和循环语句的使用方法。2
  • 3. 3.1 程序设计规范在一些大型的网络应用开发项目中,程序员往往不是孤军奋战,而是与伙伴合作,共同来完成项目的开发。 编写的代码不只是自己在看,团队伙伴同样要了解你的一些开发思路,为了达到这个目的,团队中的每个人必须遵守共同的程序设计规范。 在正式了解PHP基本语法之前,我们先来介绍一些PHP基本的程序设计规范。3
  • 4. 3.1.1 注释的使用1. 块注释 块注释通常用于提供对文件、方法、数据结构和算法的描述。 块注释被置于每个文件的开始处以及每个方法之前。 块注释之首应该有一个空行,用于把块注释和代码分隔开来 2. 单行注释 单行注释可以显示在一行内,并与其后的代码具有同样的缩进层级。 3. 尾端注释 极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。若有多个短注释出现于大段代码中,它们应该具有相同的缩进。4
  • 5. 3.1.1 注释的使用4. 行末注释 使用注释界定符“//”,可以注释掉整行或者一行中的一部分。它一般不用于连续多行的注释文本。 5. 文档注释 文档注释描述PHP的类、构造器、方法,以及字段(field)。每个文档注释都会被置于注释定界符/** ... */之中,一个注释对应一个类或成员。5
  • 6. 3.1.2 PHP中的命名规则在给变量命名的时候,除了变量名外,所有实例,包括类、类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。尽管在语法上使用下划线或美元符号开头命名是允许的,但是,我们在实际应用中应该尽量避免这种命名方法。 变量名应简短且富于描述性。 变量名的选用应该易于记忆,即能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。6
  • 7. 3.2 PHP的数据类型PHP数据类型是具有相同特性的一组数据的统称。 PHP支持8种原始类型,其中标量类型4种,复合类型2种,特殊类型2种。 常见的数据类型包括字符串型、整型、浮点型和布尔型。PHP早就提供了丰富的数据类型,PHP5中又有更多补充。7
  • 8. 3.2.1 布尔型(Boolean)与NULL布尔型类型最初出现在PHP4中,布尔型类型是表示条件是真(非0)还是假(0)的数据类型。 PHP的数据类型属于弱类型,PHP的变量在使用时可以根据具体情况自动转换成所需要的变量类型,布尔型的变量决定了条件语句的结果,通常我们使用某些运算符来返回Boolean值,并将其传递给控制流程。 其实,PHP处理Boolean类型的时候,并不是将所有的数据都做相应的转换,一般地,PHP将非0数值都认为是true,将0值认为是false。8
  • 9. 3.2.1 布尔型(Boolean)与NULLNull数据类型表示一个没有值的变量,Null可以使用一个不区分大小写的关键字NULL来表示,但是,它却不同于“空”值,“空”值是有意义的,但是NULL值是没有任何意义的,例如: 9
  • 10. 3.2.2 字符串(String)字符串是由一系列的字符组成的序列。 1. 字符串是弱类型的数据类型 2. 字符串的定义 3. 字符串的输出 10
  • 11. 3.2.3 整型(integer)整型是PHP中很常用的一个数据类型。它的取值范围是这样一个集合: Z = {…, -2, -1, 0, 1, 2, …} 整型除作为必要的运算数据外,整型值还经常用于循环控制变量等处。 1. 整型数据的表示 整型值可以用十进制、十六进制或八进制形式来表示,前面可以加上可选的符号(-或+)。 11
  • 12. 3.2.3 整型(integer)2. 常规取值范围 整型值的常规取值范围是±21亿多一点(32位有符号整数,-231~231-1)。整型数的字长与平台有关。 3. 整型相关的类型转换 (1) 从字符串转换 (2) 从布尔值转换 (3) 从浮点数转换 12
  • 13. 3.2.4 浮点型(Double/Float)浮点型通常是指我们说的实数,它是用十进制数字表示数字值,它的取值范围取决于具体的机器,PHP浮点型与C编译器的双精度数据类型范围相同,通常允许的取值范围是1.7E-308和1.7E+308之间,精确到15位数字。 浮点型数据的表示法通常有两种,我们通常使用的一种方法如下: 另外一种表示方法是科学计数法的表示法: 13
  • 14. 3.2.5 数组(Array)数组实际上是一个数据集合,相当于是一个数据容器,很多数据存放在里面,我们可以按一定的方法存进去或取出来,可以对它里面的数据进行排序等各种操作,还可以检查里面有没有我们想要的数据等。 本小节只通过一个实例来了解数组: 14
  • 15. 3.2.6 对象(Object)PHP是一种支持OOP(Object-Oriented Programming,面向对象编程)。OOP促进了清晰的模块化设计,简化了调试和维护,并且有助于提高代码的可重用性。 类(class)是面向对象程序设计的单元。类是包含属性和方法的结构定义,一个类的实例称之为对象。 15
  • 16. 3.2.6 对象(Object)一旦定义了一个类,我们就可以使用new关键字来创建一个对象,并且来访问对象的属性和方法: setName("张三"); //设置对象的#name属性 $personOne->setAge("27"); //设置对象的$age属性 echo $personOne->getName(); //输出$personOne的$name属性 echo $personOne->getName(); //输出$personOne的$age属性 ?> 在学习浮点型数据类型的时候,我们知道可以使用is_float()函数来判断一个变量是不是浮点数据,同样,也可以使用is_object()函数来判断一个变量是不是对象: 显然,变量$personOne是我们刚刚创建的一个Person类的对象,此演示将顺利执行条件语句块里面的语句。16
  • 17. 3.3 运算符和关键字PHP提供三种类型的运算符: 一元运算符。只运算一个值,例如 !(取反运算符)或 ++(加1运算符)。 有限二元运算符,PHP支持的大多数运算符都是这种。 三元运算符 ?:。被用来根据一个表达式的不同取值而在另两个表达式中选择一个。17
  • 18. 3.3.1 算术运算符算术运算符非常直观,它们就是常见的数学运算符,PHP的算术运算符如表3-1所示。运 算 符名 称示 例+加$a+%b-减$a-$b*乘$a*$b/除$a/$b%取余$a%$b18
  • 19. 3.3.2 字符串运算符在PHP中,应用于字符串的运算符从形式上看有两个: 连接运算符(.),它返回其左右参数连接后的字符串。 连接赋值运算符(.=),它将右边参数附加到左边的参数后。19
  • 20. 3.3.3 赋值运算符在PHP中,基本的赋值运算符是“=”。 除了基本赋值运算符之外,还有适合于所有二元算术、数组集合和字符串运算符的“组合运算符”,这样可以在一个表达式中使用它的值并把表达式的结果赋给它,例如: 20
  • 21. 3.3.4 比较运算符比较运算符是用来比较两个值的操作符,比较运算符的表达式根据比较结果返回布尔型变量值true或false。 1. 相等(==)运算符 相等的比较运算符(==)可以用来测试两个值是否相等 例如,可以使用下面的表达式来判断变量$a和变量$b是否相等: 21
  • 22. 3.3.4 比较运算符2. 其他比较运算符名 称例 子结 果等于$a == $b为true的条件:如果$a等于$b全等$a === $b为true的条件:如果$a等于$b,并且它们的类型也相同(PHP4引进)不等$a! = $b为true的条件:如果$a不等于$b不等$a <> $b为true的条件:如果$a不等于$b非全等$a !== $b为true的条件:如果$a不等于$b,或者它们的类型不同(PHP4引进)小于$a < $b为true的条件:如果$a严格小于$b大于$a > $b为true的条件:如果$a严格大于$b小于等于$a <= $b为true的条件:如果$a小于或者等于$b非全等$a >= $b为true的条件:如果$a大于或者等于$b22
  • 23. 3.3.5 逻辑运算符逻辑运算符(Logical Operators)通常用来测试真值或假值。PHP提供了丰富的逻辑运算符,如表3-3所示。名 称例 子结 果And(逻辑与)$a and $b为true的条件:如果$a与$b都为trueOr(逻辑或)$a or $b为true的条件:如果$a或$b任一为trueXor(逻辑异或)$a xor $b为true的条件:如果$a或$b任一为true,但不同时为trueNot(逻辑非)! $a为true的条件:如果$a不为trueAnd(逻辑与)$a && $b为true的条件:如果$a与$b都为trueOr(逻辑或)$a || $b为true的条件:如果$a或$b任一为true23
  • 24. 3.3.6 位运算符位操作符可以将一个整型变量当作一系列的位来处理,在PHP中,位运算符可能并不经常使用,在这里我们通过表3-4来说明其使用方法及其功能。名 称例 子结 果And(按位与)$a & $b将把$a和$b中都为1的位设为1Or(按位或)$a | $b将把$a或者$b中为1的位设为1Xor(按位异或)$a ^ $b将把$a和$b中不同的位设为1Not(按位非)~ $a将$a中为0的位设为1,反之亦然Shift left(左移)$a << $b将$a中的位向左移动$b次(每一次移动都表示“乘以2”)Shift right(右移)$a >> $b将$a中的位向右移动$b次(每一次移动都表示“除以2”)24
  • 25. 3.3.7 自增与自减运算符在PHP中,自增与自减运算符表示为++和--。 表3-5说明了自增与自减运算符的功能效果。名 称例 子结 果前加++$a$a的值加1,然后返回$a后加$a++返回$a,然后将$a的值加1前减--$a$a的值减1,然后返回$a后减$a--返回$a,然后将$a的值减125
  • 26. 3.3.8 PHP的关键字关键字(Keyword)是编程语言为其核心功能而保留的单词。在对变量、函数、类和常量进行命名时,不能使用与关键字同样的名字,表3-6列出了PHP中的关键字,注意,关键字是区分大小写的。and$argc$argvasbreakcasecfunctionclasscontinuedeclaredefaultdiedoE_ALLechoE_ERROEelseelseifemptyenddeclareendforendforeachendifendswitchE_PAESEevalE_WARNINGexitextendsFALSEforforeachfunction$HTTP_COOKIE_VARS$HTTP_ENV_VARS$HTTP_GET_VARS$HTTP_POST_FILES$HTTP_POST_VARS$HTTP_SERVER_VARSifincludeinclude_oncegloballistnewnotNULLold_functionorparentPHP_OS$PHP_SELFPHP_VERSIONprintrequirerequire_oncereturnstaticstdClassswitch$thisTRUEvarvirtualwhilexor__FILE__LINE__sleep__wakeup$_COOKIE$_ENV$_FILES$_GET$_POST$SERVER26
  • 27. 3.4 条 件 语 句条件语句使应用程序在运行时能根据不同的条件来执行不同的程序块,在PHP中支持if和switch两种条件语句。27
  • 28. 3.4.1 if-else语句在PHP中,if语句是最常用的条件语句之一,同时,if语句也是大多数程序开发语言中存在的条件语句。if条件语句的语法如下: 28
  • 29. 3.4.2 switch语句switch语句是PHP中的另外一种条件判断语句。switch条件分支语句简化了使用if语句进行的多重嵌套判断。 switch条件分支语句也称情况(case)语句,其功能是从多个待选择符的条件中选择一个符合条件的语句,switch语句的基本语法如下: 29
  • 30. 3.4.3 三元条件语句三元条件语句使用了“? :”,它的基本语法如下: 条件判断表达式的返回值是一个布尔类型的变量,如果返回的是true,那么表达式1将被执行;否则,表达式2将被执行。例如,下面的程序判断变量$a是不是一个数组,根据不同的判断结果输出不同的结果: 30
  • 31. 3.5 循 环 语 句循环语句用于在程序中循环执行一项特定的工作,例如在数据库操作中,利用循环来显示一个数据集。 PHP为开发者提供了丰富的循环操作语句,本节将向读者介绍这些语句。31
  • 32. 3.5.1 for循环for循环是经常能够使用到的循环语句,for循环可以确定循环的次数,在使用for循环的时候首先要为循环变量设置一个初始值和一个终值,循环变量可以是任意合法的标识符,循环变量的类型可以是整型、布尔型、字符类型等。for循环的基本语法如下: 32
  • 33. 3.5.1 for循环为了理解for循环的循环流程,我们使用图3-1来描述for循环的循环结构。33
  • 34. 3.5.1 for循环1. 无限循环 无限循环又称“死循环”。由于空表达式在语法上是有效的,所以可以把for语句的三个表达式留空,这样就会产生不断执行for语句的效果。其语法如下: 2. 使用空表达式 使用空表达式就是说在初始化循环表达式中使用null语法,初始化表达式置为null最常见的作用就是完成更为复杂的初始化工作。 3. 多重循环 使用多重循环来控制多个变量也是在for语句中经常出现的。 4. 更为复杂的表达式 如果把for语句的三个表达式写得复杂一些,则可以用于优化算法。甚至可以使用没有循环体的for语句来完成一些任务。 34
  • 35. 3.5.2 while循环while循环语句又称“当型”循环语句。该语句的执行过程是先判断while后的布尔表达式,然后再执行,当条件语句的表达式的值为TRUE时,执行其中的循环体,直到条件表达式的值为FALSE时才退出循环。while循环的基本语法如下: while(条件表达式){ 循环体 }35
  • 36. 3.5.2 while循环while循环的执行流程如图3-2所示。36
  • 37. 3.5.3 do-while循环do-while循环也是PHP中经常用到的循环语句,该语句不同于while循环,while循环在执行循环体之前,先判断循环条件是不是成立,如果成立,则执行循环体,并且进行计数,如果循环条件不成立,则跳出循环,不执行循环体;而do-while循环语句则不同,do-while循环至少执行一次循环体,然后再判断循环条件是否成立,若循环条件成立,则返回并继续执行循环体,否则,跳出循环。 do-while循环语句的基本语法如下: 37
  • 38. 3.5.3 do-while循环它的循环结构可以用图3-3来表示。38
  • 39. 3.5.3 do-while循环下面通过简单的示例来理解两者的区别。 (1) while循环演示: '; $a++; } ?> 如果执行上面的程序,将不会输出任何东西,因为变量$a=10,不满足$a<10的循环条件。 (2) do-while循环演示: '; $a++; } while($a<10); ?> 如果执行上面的程序片段,将会输出: 1039
  • 40. 3.5.4 foreach循环在使用foreach循环遍历数组之前,必须先对要遍历的数组进行初始化,否则,PHP会产生错误。 foreach循环的语法可以分为两种情况来写。 (1) 第一种情况的语法如下: (2) foreach循环的第二种语法如下: $value){ 循环体 } ?>40
  • 41. 3.5.5 break与continuecontinue在循环结构中用来跳过本次循环中剩余的代码并在判断条件值为真时开始执行下一次循环。continue接受一个可选的数字参数来决定跳过几重循环到循环结尾。而break则直接跳出本循环,继续执行循环以外的程序。 41
  • 42. 3.5.6 实例:九九乘法口诀表的打印1. for版本的程序 程序代码如下: '; } ?>42
  • 43. 3.5.6 实例:九九乘法口诀表的打印2. while版本的程序 程序代码如下: '; $i++; } ?> 43
  • 44. 3.5.6 实例:九九乘法口诀表的打印3. do-while版本的程序 程序代码如下: '; $i++; } while($i<=9); ?>44
  • 45. 3.6 本 章 小 结本章介绍了PHP语言的基本语法结构,包括变量、常量、数据类型、运算符、函数、条件和循环语句等知识。PHP语言与C语言有着重要的联系,其中很多语法现象也是相似的,学习PHP的同时可参照C语言来学习,这样能从其他的角度促进知识的积累。 在任何一门编程语言中,基础的语法知识无疑是最重要的。在学习PHP时,只要不断实践,牢牢地掌握其语法本质,就会取得事半功倍的效果。45