2第3章PHP的基本语法要更好地应用PHP脚本语言来进行动态网站的开发,先要熟知PHP语言的一些约定规则,这些约定规则就是本章所要介绍的基本语法,掌握了这些语法规则,就会在实际的应用开发过程中运用自如。本章将从PHP的程序设计规范开始,分别讲述PHP的数据类型、PHP的运算符、PHP的条件语句和循环语句的使用方法。33.1程序设计规范在一些大型的网络应用开发项目中,程序员往往不是孤军奋战,而是与伙伴合作,共同来完成项目的开发。编写的代码不只是自己在看,团队伙伴同样要了解你的一些开发思路,为了达到这个目的,团队中的每个人必须遵守共同的程序设计规范。在正式了解PHP基本语法之前,我们先来介绍一些PHP基本的程序设计规范。43.1.1注释的使用1.块注释块注释通常用于提供对文件、方法、数据结构和算法的描述。块注释被置于每个文件的开始处以及每个方法之前。块注释之首应该有一个空行,用于把块注释和代码分隔开来2.单行注释单行注释可以显示在一行内,并与其后的代码具有同样的缩进层级。3.尾端注释极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。若有多个短注释出现于大段代码中,它们应该具有相同的缩进。53.1.1注释的使用4.行末注释使用注释界定符“//”,可以注释掉整行或者一行中的一部分。它一般不用于连续多行的注释文本。5.文档注释文档注释描述PHP的类、构造器、方法,以及字段(field)。每个文档注释都会被置于注释定界符/**...*/之中,一个注释对应一个类或成员。63.1.2PHP中的命名规则在给变量命名的时候,除了变量名外,所有实例,包括类、类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。尽管在语法上使用下划线或美元符号开头命名是允许的,但是,我们在实际应用中应该尽量避免这种命名方法。变量名应简短且富于描述性。变量名的选用应该易于记忆,即能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。73.2PHP的数据类型PHP数据类型是具有相同特性的一组数据的统称。PHP支持8种原始类型,其中标量类型4种,复合类型2种,特殊类型2种。常见的数据类型包括字符串型、整型、浮点型和布尔型。PHP早就提供了丰富的数据类型,PHP5中又有更多补充。83.2.1布尔型(Boolean)与NULL布尔型类型最初出现在PHP4中,布尔型类型是表示条件是真(非0)还是假(0)的数据类型。PHP的数据类型属于弱类型,PHP的变量在使用时可以根据具体情况自动转换成所需要的变量类型,布尔型的变量决定了条件语句的结果,通常我们使用某些运算符来返回Boolean值,并将其传递给控制流程。其实,PHP处理Boolean类型的时候,并不是将所有的数据都做相应的转换,一般地,PHP将非0数值都认为是true,将0值认为是false。93.2.1布尔型(Boolean)与NULLNull数据类型表示一个没有值的变量,Null可以使用一个不区分大小写的关键字NULL来表示,但是,它却不同于“空”值,“空”值是有意义的,但是NULL值是没有任何意义的,例如:?php$a=abc;$b=;//表示的是一个字符串变量,但是却给它赋“空”值$c=NULL;//$c变量没有任何意义?103.2.2字符串(String)字符串是由一系列的字符组成的序列。1.字符串是弱类型的数据类型2.字符串的定义3.字符串的输出113.2.3整型(integer)整型是PHP中很常用的一个数据类型。它的取值范围是这样一个集合:Z={…,-2,-1,0,1,2,…}整型除作为必要的运算数据外,整型值还经常用于循环控制变量等处。1.整型数据的表示整型值可以用十进制、十六进制或八进制形式来表示,前面可以加上可选的符号(-或+)。123.2.3整型(integer)2.常规取值范围整型值的常规取值范围是±21亿多一点(32位有符号整数,-231~231-1)。整型数的字长与平台有关。3.整型相关的类型转换(1)从字符串转换(2)从布尔值转换(3)从浮点数转换133.2.4浮点型(Double/Float)浮点型通常是指我们说的实数,它是用十进制数字表示数字值,它的取值范围取决于具体的机器,PHP浮点型与C编译器的双精度数据类型范围相同,通常允许的取值范围是1.7E-308和1.7E+308之间,精确到15位数字。浮点型数据的表示法通常有两种,我们通常使用的一种方法如下:?php$floatA=3.14;$floatB=0.21;$floatC=-3.88?另外一种表示方法是科学计数法的表示法:?php$floatA=0.314E1;$floatB=17.0E-3;?143.2.5数组(Array)数组实际上是一个数据集合,相当于是一个数据容器,很多数据存放在里面,我们可以按一定的方法存进去或取出来,可以对它里面的数据进行排序等各种操作,还可以检查里面有没有我们想要的数据等。本小节只通过一个实例来了解数组:?php$arrStudent=array();//定义$arrStudent为一个空的数组变量Array_push($arrStudent,张三,李四);//向数组中压入两个变量echo$arrStudent[0];//输出“张三”if(in_array(李四,$arrStudent)){//判断李四是不是在数组中echo李四在数组中;}?153.2.6对象(Object)PHP是一种支持OOP(Object-OrientedProgramming,面向对象编程)。OOP促进了清晰的模块化设计,简化了调试和维护,并且有助于提高代码的可重用性。类(class)是面向对象程序设计的单元。类是包含属性和方法的结构定义,一个类的实例称之为对象。163.2.6对象(Object)一旦定义了一个类,我们就可以使用new关键字来创建一个对象,并且来访问对象的属性和方法:?php$personOne=newPerson();//创建Person类的一个对象$personOne-setName(张三);//设置对象的#name属性$personOne-setAge(27);//设置对象的$age属性echo$personOne-getName();//输出$personOne的$name属性echo$personOne-getName();//输出$personOne的$age属性?在学习浮点型数据类型的时候,我们知道可以使用is_float()函数来判断一个变量是不是浮点数据,同样,也可以使用is_object()函数来判断一个变量是不是对象:?phpif(is_object($personOne)){echo变量是一个对象;}?显然,变量$personOne是我们刚刚创建的一个Person类的对象,此演示将顺利执行条件语句块里面的语句。173.3运算符和关键字PHP提供三种类型的运算符:一元运算符。只运算一个值,例如!(取反运算符)或++(加1运算符)。有限二元运算符,PHP支持的大多数运算符都是这种。三元运算符?:。被用来根据一个表达式的不同取值而在另两个表达式中选择一个。183.3.1算术运算符算术运算符非常直观,它们就是常见的数学运算符,PHP的算术运算符如表3-1所示。运算符名称示例+加$a+%b-减$a-$b*乘$a*$b/除$a/$b%取余$a%$b193.3.2字符串运算符在PHP中,应用于字符串的运算符从形式上看有两个:连接运算符(.),它返回其左右参数连接后的字符串。连接赋值运算符(.=),它将右边参数附加到左边的参数后。203.3.3赋值运算符在PHP中,基本的赋值运算符是“=”。除了基本赋值运算符之外,还有适合于所有二元算术、数组集合和字符串运算符的“组合运算符”,这样可以在一个表达式中使用它的值并把表达式的结果赋给它,例如:?php$a=5;$a+=3;//等价于$a=$a+3$b=Ilove;$b.=PHP!;//等价于$b=$b.PHP!?213.3.4比较运算符比较运算符是用来比较两个值的操作符,比较运算符的表达式根据比较结果返回布尔型变量值true或false。1.相等(==)运算符相等的比较运算符(==)可以用来测试两个值是否相等例如,可以使用下面的表达式来判断变量$a和变量$b是否相等:?php$a=1;$b=2;if($a==$b){echo$a等于$b;}?223.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大于或者等于$b233.3.5逻辑运算符逻辑运算符(LogicalOperators)通常用来测试真值或假值。PHP提供了丰富的逻辑运算符,如表3-3所示。名称例子结果And(逻辑与)$aand$b为true的条件:如果$a与$b都为trueOr(逻辑或)$aor$b为true的条件:如果$a或$b任一为trueXor(逻辑异或)$axor$b为true的条件:如果$a或$b任一为true,但不同时为trueNot(逻辑非)!$a为true的条件:如果$a不为trueAnd(逻辑与)$a&&$b为true的条件:如果$a与$b都为trueOr(逻辑或)$a||$b为true的条件:如果$a或$b任一为true243.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,反之亦然Shiftleft(左移)$a$b将$a中的位向左移动$b次(每一次移动都表示“乘以2”)Shiftright(右移)$a$b将$a中的位向右移动$b次(每一次移动都表示“除以2”)253.3.7自增与自减运算符在PHP中,自增与自减运算符表示为++和--。表3-5说明了自增与自减运算符的功能效果。名称例子结果前加++$a$a的值加1,然后返回$a后加$a++返回$a,然后将$a的值加1前减--$a$a的值减1,然后返回$a后减$a--返回$a,然后将$a的值减1263.3.8PHP的关键字关键字(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