PHP(Hypertext Preprocessor,超文本预处理器)。
一、PHP入门
1、指令分隔符“分号”
语义分为两种:一种是在程序中使用结构定义语句,例如流程控制、函数定义、类的定义等,用来定义程序结构使用的语句。在结构语句后面不能使用分号作为结束;
另一种是在程序中使用功能执行语句,例如变量的声明、内容的输出、函数的调用等,是用来在程序中执行某些特定功能的语句,这种语句也可以成为指令,php需要在每个指令后用分号结束。
2、程序注释
php注释的三种形式:
以“/*”和“*/”闭合多行注释符,
“//”和"#"开始的单行注释符
3、在程序中使用空白的处理
下列情况应该总是使用两个空行:
一个源文件的两个代码片段之间。
两个类的声明之间。
下列情况应该总是使用一个空行:
两个函数声明之间。
函数内的局部变量和函数的第一条语句之间。
块注释或单行注释之前。
一个函数内的两个逻辑代码段之间,用以提高可读性。
空格的应用规则:
一般用于关键字和括号之间,函数名与左括号间不应使用空格。
一般函数的参数列表中的逗号后面添加空格。
数学算式的操作数与运算符之间应该添加空格(二进制元算与医院元算除外)。
for语句中表达式应该用逗号分开,后面添加空格。
二、变量
第一次赋值,就创建了变量。必须使用"$"后跟变量名表示。再次给该变量赋值会覆盖之前的变量。
php变量声明以后有一定的范围,变量的范围即它定义的上下文背景(也就是它生效范围)。大部分的php变量如果不是在函数里面声明的,只有在声明处到文件结束的一个单独范围内使用。这个单独的范围跨度不仅是<?php 标记开始处到?>结束标记处使用,可以在一个页面的所有开启的PHP模式下使用,也包含了include和require引入的文件。如果使用COOKIE或SESSION还可以在多个页面中应用。
在变量的使用范围周期内,我们可以借助unset()函数释放指定的变量,使用isset()函数检测变量是否设置和使用empty()函数检测一个变脸是否为空。
empty()与isset()的区别:
如果empty()函数的参数是非空或非零的值,则empty()返回false。""、0、“0”、null、false、array()、var $var、以及没有任何属性的对象都将被认为是空的。如果参数为空,则返回true。
如果函数isset()参数存在,则返回true。若使用isset()检测一个被设置成null的变量或使用unset()释放了一个变量,都将返回false。
注意:字节NULL(" ")并不等同于null常数。
建议:使用!empty($var)判断变量存在且不能为空。
1、变量的命名
变量名区分大小写。但内置结构和关键字以及用户自定义的类名和函数名都是不区分大小写的。
驼峰命名法。如:$aaaBBBccc。
2、可变变量
可变变量可使用一个普通变量的值作为这个可变变量的变量名。
3、变量的引用赋值
变量总是传值赋值。也就是说,当将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。改变其中一个变量的值,将不会影响到另一个变量。
引用赋值,将“&”加到变量前。将变量的引用方式复制给新的变量,指向共同的引用,改变任何一个变量的值,都会影响另一个变量。只有有名字的变量才可以引用赋值。不会将引用赋值的两个变量在内存上同体,只是把各自的值相关联起来,基于这一点,unset()不会导致另一个变量消失。
4、变量的类型
4种标量类型:boolean(布尔型)、integer(整型)、float(浮点型)、string(字符串)
2种复合类型:array(数组)、object(对象)
2种特殊类型:resource(资源)、NULL
如果想看某个表达式的值和类型,可以使用函数var_dump()。
布尔类型
以下值被认为是false
1)布尔值false。
2)整型值0(零)为假,-1和其他非零值(不论正负)一样,被认为是true。
3)浮点型值0.0(零)。
4)空白字符串和字符串“0”
5)没有成员变量的数组。
6)特殊类型NULL
整型
有最大范围2 147 483 647 。PHP不支持无符号整数,如果给定的数超出最大范围,将会被解释为float。
浮点型
永远不要比较两个浮点数是否相等。
如果需要更高的精度,应该使用任意精度数学函数或gmp()函数。
字符串
单引号字符串:
如果要在单引号中引用单引号,需要使用反斜杠()转义。
如果在单引号之前或字符串结尾需要出现一个反斜线,需要用两个反斜线表示。
其中出现的变量不会被变量的值替代。即php不会解析单引号中的变量,而是将变量名原样输出。定义简单字符串时,单引号字符串效率更高。
双引号字符串:其中的变量会被解析。
定界符字符串:
使用定界符<<<开始,之后提供一个标识符,然后是包含的字符串,最后是同样顶格书写的标识符。
定界符文本处理不能初始化类成员以外,表现的就和双引号字符串一样,只是没有双引号。这意味着在定界符文本中不需要转义引号,不过仍然可以用以上列出来的在双引号中可以使用的转义符号。而且定界符中的变量也会被解析,但当在定界符文本中表达复杂变量时和字符串一样同样也需要注意。所以能够很容易地使用定界符定义较长的字符串,通常用于从文本或者数据库中打断地输出文档。
数组(Array)
使用print_r()函数查看数组中的全部内容。
对象(Object)
1
2
3
4
5
6
7
8
9
10
11
|
<?php class Person{ var $name ; function say(){ echo "Doing foo" ; } } $p = new Person(); $p ->name= "staven" ; $p ->say(); ?> |
->:表示对象属性、方法的引用
资源类型(Resource)
NULL类型
特殊的NULL值表示一个变量没有值,NULL类型唯一可能的值就是NULL。NULL不表示空格,也不表示零,也不是空字符串,而是表示一个变量的值为空。NULL不区分大小写,在下列情况下一个变量被认为是NULL。
a)将变量直接赋值为NULL。
b)声明的变量尚未被赋值。
c)被unset()函数销毁的变量。
伪类型
mixed:说明一个参数可以接受多种不同的(但并不必须是所有的)类型。例如getype()可以接受所有的php类型,str_replace()可以接受字符串和数组。
number:说明一个参数可以是integer或者float。
callback:有些诸如call_user_function()或usort()的函数接受用户自定义的函数作为一个参数。callback函数不仅可以是一个简单的函数,他还可以是一个对象的方法,包括静态类的方法。一个php函数用函数名字符串来传递。可以传递任何内置的或者用户自定义的函数,除了array(),echo(),empty(),eval(),exit(),isset(),list(),print()和unset()。
数据类型之间相互转换
自动转换通常发生在不同数据类型的变量混合运算时,若参加元算量的类型不同,则显转换成同一类型,然后在进行运算。通常只有四种标量类型(integer、float、string、boolean)才使用自动类型转换。这并没有改变这些运算书本身的类型,改变的近视这些运算数如何被求值。自动类型转换虽然石油系统自动完成的,但在混合运算时,自动转换要遵循转换按数据长度增加的方向进行,以保证精度不降低。
有布尔型值参与运算时,true将转化为整型1,flase将转化为整型0后再参与运算。
有NULL值参与运算时,NULL值转化为整型0在进行运算。
有integer型和float型参与运算时,先把integer型变量转换成float类型后在进行运算。
有字符串和数字型(integer、float)数据参与运算时,字符串先转换为数字,在参与运算。转化后的数字是从字符串开始的数值字符串,如果在字符串开始的数值型字符串不带小数点则转换为integer类型数字。如果带有小数点则转换为float类型数字。
强制类型转换
再要转换的变量之前加上用括号括起来的目标类型,也可以使用具体的转换函数,即intval()、floatval()、strval()或者用setType()函数转换类型。
intval()、floatval()、strval()强制类型转换没有改变变量本身的类型,而是通过转换将得到的新类型的数据赋值给新的变量,原变量的类型和值不变。如果需要改变自身的类型与值,可以使用setType()函数来设置变量的类型。
变量类型的测试函数
is_bool():判断是否是布尔型。
is_int()、is_integer()和is_long():判断是否是整型。
is_float()、is_double()和is_real():判断是否是浮点数。
is_string():判断是否是字符串。
is_array():判断是否是数组。
is_object():判断是否是对象。
is_resource():判断是否是资源类型。
is_null():判断是否为空。
is_scalar():判断是否是标量,也就是一个整数、浮点数、布尔型或字符串。
is_numberic():判断是否是任何类型的数字或数字字符串。
is_callable():判断是否是有效的函数名。
三、常量
常量只能包含四种标量数据。
常量的定义
define(string name,mixed value[,bool case_insensitive]);
第一个参数为常量名,第二个参数为常量的值或表达式,第三个参数是可选的,如果把case_insensitive设为true,则常数将会定义成不区分大小写。如果只想检测是否定义了某常量,用defined()函数。
预定义常量
循环语句
break
在循环语句中中断循环语句,也就是结束循环语句的执行。
break语句可以将深埋在嵌套循环中的语句退出指定层数或直接退出最外层,break是接受一个可选的数字参数来决定跳出几重语句。break可以跳出几重循环语句或是几重switch语句。
continue
continue 语句只能使用在循环语句内部,功能是跳过该次循环,继续执行下一次循环结构。在while和do-while语句中continue语句跳转到循环条件处开始继续执行,对于for循环随后的动作是变量更新。.
接受一个可选数字参数来决定条出多重语句。
在循环中遇到continue语句后,就不会执行该循环中位于是continue后的任何语句。
continue语句用于结束循环,继续下一次循环。
exit
当前脚本只要执行到exit语句,而不管它在那个结构中都会直接退出当前脚本。exit()是一个函数,die()函数就是exit()函数的别名,可以带有一个参数输出一条信息,并退出当前脚本。