资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,PHP,变量与运算符,内容摘要,常量,变量,数据类型,运算符,常量,常量是固定的数值例如圆周率,可以是任何的数据类型,常量可以理解为储存数据的容器,但它和变量完全不一样而且通常情况下它的名称会大写,最主要的不同是常量的数值不会变,你不能通过重新定义的方式改变一个常量。,常量分为:内置常量和自定义常量。,内置常量,,PHP,系统提供的在任何页面数值不会改变,常量是一个简单值的标识符(名字)。常量默认为大小写敏感。按照惯例常量标识符总是大写的。,常量名和其它任何,PHP,标签遵循同样的命名规则。合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。,常量的定义:,可以用,define(),函数来定义常量。一个常量一旦被定义,就不能再改变或者取消定义。,常量只能包含标量数据(,boolean,,,integer,,,float,和,string,)。,常量使用实例:,PHP,一些常见的系统常(部分),_FILE_,PHP,文件名,假如是引用文件,则显示引用文件名,_LINE_,PHP,文件的行数,PHP_VERSION,显示,PHP,版本,PHP_OS,显示服务器的操作系统版本,TRUE FALSE,表示真假的常量,E_ERROR,指明了代码中最近的错误处,E_WARNING,指明了代码中最近的警告处,E_PARSE,分析代码何处有着潜在的问题,E_NOTICE,为发生不寻常但不一定是错误处,检查常量是否存在,defined(),函数,用,define(),函数来自定义常量。,define(“mycomputer,”,“IBM”);,定义常量:,mycomputer,常量的值为,IBM,defined(“mycomputer,”);,检测常量是否被定义,定义返回,1,否则返回空,例如:,define(NAME,php,);,define(NAME,linux,);,echo NAME;,变量,1.,变量的定义,PHP,中一个美元符号(,$,)后面跟上一个变量名称,,即表示一个变量。变量的名称是对大小写敏感的。,变量名与,PHP,中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。,2.,可变变量,有时候使用可变变量名是很方便的。就是说,一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。例如:,3.,常量和变量不同:,常量前面没有美元符号(,$,);,常量只能用,define(),函数定义,而不能通过赋值语句;,常量可以不用理会变量范围的规则而在任何地方定义和访问;,常量一旦定义就不能被重新定义或者取消定义;,常量的值只能是标量。,数据类型,PHP,支持八种原始类型。,四种标量类型:,布尔型(,boolean,),整型(,integer,),浮点型(,float,)(浮点数,也作,double,),字符串(,string,),两种复合类型:,数组(,array,),对象(,object,),最后是两种特殊类型:,资源(,resource,),NULL,PHP,是一种非常弱的类型语言。在大多数编程语言中,变量只能保持一种类型的数据,而且这个类型必须在使用变量前声明,例如,C,语言中。而在,PHP,中,变量的类型通常不是由程序员设定的,确切地说,是根据该变量使用的上下文在运行时(即变量的值)决定的。,如果想查看某个变量或,表达式,的值和类型,用 函数,var_dump,(),。,如果想,查看某个变量的类型可以用函数,gettype,(),。格式:,string,gettype,(mixed,var,),。,如果要将一个变量强制转换为某类型,可以对其使用,强制转换,或者,settype,(),函数。,实例:,整型,整型值可以用十进制,十六进制或八进制符号指定,前面可以加上可选的符号(,-,或者,+,)。,3.,浮点型,浮点数(也叫浮点数,双精度数或实数)可以用以下任何语法定义:,字符串,string,是一系列字符。在,PHP,中,字符和字节一样,也就是说,一共有,256,种不同字符的可能性。这也暗示,PHP,对,Unicode,没有本地支持。,5.,布尔型,这是最简单的类型。,boolean,表达了真值,可以为,TRUE,或,FALSE,。,当转换为,boolean,时,以下值被认为是,FALSE,:,布尔,值,FALSE,整型,值,0,(零),浮点型,值,0.0,(零),空白,字符串,和,字符串,0,没有成员变量的,数组,没有单元的,对象,(仅适用于,PHP 4,),特殊类型,NULL,(包括尚未设定的变量),所有其它值都被认为是,TRUE,(包括任何,资源,)。,6,数组(,Array,),数组是,PHP,中的一种重要的数据类型。一个标量只能存放一个数据,而数组可以存放多个数据。,$my=array(1,2,abc,d);,7,对象,(Object),对象是一种高级的数据类型,8,资源,(Resource),资源是由专门的函数来建立和使用的。资源是一种特殊的数据类型,并由程序员分配(创建、使用和释放)。任何资源,在不需要的时候应该被及时释放。如果程序员忘记了释放资源,系统自动启用垃圾回收机制,以避免内存的消耗殆尽。这往往发生在,PHP,脚本运行结束之前,只有那时,系统才确信不会操作任何资源。,用户无法获知某个资源的细节,它们通常包含诸如打开文件、数据库连接、图形画布区域的特殊句柄。只有在文档产程序手册中,才能找到详细描述。,6.,类型强制转换,PHP,中的类型强制转换:在要转换的变量之前加上用括号括起来的目标类型。,允许的强制转换有:,(,int,),(integer)-,转换成整型,(,bool,),(,boolean,),转换成布尔型,(float),(double),(real)-,转换成浮点型,(string)-,转换成字符串,(array)-,转换成数组,(object),转换成对象,强制类型转换,使用函数,settype,(),还有,3,个更为具体的转换函数:,intval,()/,转换整型,floatval,()/,转换浮点型,strval,()/,转换字符串,类型转化的细节,2.,数字,(,浮点数和整数类型间可以互相转化,),整数转化为浮点型,由于浮点型的精度范围远大于整型,所以转化后的精度不会改变。,浮点型转化为整型,将自动舍弃小数部分,只保留整数部分。如果一个浮点数超过整型数字的有效范围,其结果将是不确定的。,整型的最在值约是,2.147e9.,因为溢出的部分已经丢失,无法给出一个确切的原始结果。,1.,布尔型与,NULL,一个布尔型变量可以转化为整型,NULL,值转为字符串,为空字符“”,3,字符串,字符串可以转化为数字。转化后的数字是从字符串开始部分的数值型字符串。数值型字符串包括用科学计数法表示的数字。,数组和对象转化为字符串,结果将是”,Array”,和”,Object”.,资源型数据转化为字符串。,$,fp,=,fopen(“foo,”,“w”);,echo,get_resource_type($fp,);/,输出,file,,一个文件的资源。,4,数组,将一个布尔值、数字或字符串转化为数组型数据,,将得到一个以上类型数据元素的数组,将,NULL,转化为数组,会得到一个空数组,将对象转换成一个数组,所得到的数组的元素为对象的属性,其键名为成员变量名。,PHP,的外部变量,PHP,的特点之一是可以用简单的方式处理表单数据,获取环境变量。在,PHP,中,这些外部数据或变量保存在一种特殊的全局数组中。,表单数据,$_,POST“name,”;,$_,GET“name,”;,$_,REQUEST“name,”;,PHP,的外部变量,环境变量,PHP,中使用,$_ENV,和,$_SERVER,获取系统的环境变量。这些环境变量包含了,WEB,服务器的一些配置信息,以及浏览器的一些状态信息,使用函数,phpinfo,(),可以返回更多的环境信息,其中包含了,$_ENV,和,$_SERVER,的内容。,程序可以根据不同的环境,如浏览器的类型等,设置不同的输出效果。,表达式,表达式是变量、常量和运算符号的组合。,表达式是,PHP,中的重要内容,,PHP,中几乎所有的东西都可以称为表达式。,$x=10;,$y=($x=10);,$,condition?$true_item:false_item,;,运算符,运算符是用来对数值和变量进行某种操作运算的符号。一般地说,运算符可以带有,1,个、,2,个和,3,个运算对象。他们之间也有先后顺序,具体如下:,算术运算符,运算符名称结果,$a+$b,加法,$a,和,$b,的和,$a-$b,减法,$a,和,$b,的差,$a*$b,乘法,$a,和,$b,的积,$a/$b,除法,$a,除以,$b,的商,$a%$b,取模,$a,除以,$b,的余数,除号(“,/”,)总是返回浮点数,即使两个运算数是整数(或由字符串转换成的整数)也是这样。,递增递减运算符,运算符名称 结果,+$a,前加,$a,的值加一,然后进行操作,$a+,后加,$a,的值先进行操作,后加一,-$a,前减,$a,的值减一,然后进行操作,$a-,后减,$a,的值先进行操作,后减一,实例:,比较运算符,运算符名称结果,$a=$b,等于,TRUE,,如果,$a,等于,$b,$a=$b,全等,TRUE,,如果,$a,等于,$b,,并且它们的类型也相同,$a!=$b,不等,TRUE,,如果,$a,不等于,$b,$a$b,不等,TRUE,,如果,$a,不等于,$b,$a!=$b,非全等,TRUE,,如果,$a,不等于,$b,,或者它们的类型不同,$a$b,大于,TRUE,,如果,$a,严格,$b,$a=$b,大于等于,TRUE,,如果,$a,大于或者等于,$b,另外一个条件运算符是“,?:”,(或三元)运算符。,实例:,$b?,true:false,;,echo$,str,;/,输出:,false,?,逻辑运算符,运算符名称结果,$a and$b,逻辑与,TRUE,,如果,$a,与,$b,都为,TRUE,。,$a or$b,逻辑或,TRUE,,如果,$a,或,$b,任一为,TRUE,。,$a,xor,$b,异或,TRUE,,如果,$a,和,$b,不同时,!$a,逻辑非,TRUE,,如果,$a,不为,TRUE,。,$a&$b,逻辑与,TRUE,,如果,$a,与,$b,都为,TRUE,。,$a|$b,逻辑或,TRUE,,如果,$a,或,$b,任一为,TRUE,。,其中,and,与,&,、,or,与,|,是同一逻辑运算符的两种写法,。,逻辑与和逻辑或,都是,短路运算符,。在遇到下列逻辑表达式时,,PHP,解释程序将不会计算右边的表达式:,位运算符,位运算符允许对整型数中指定的位进行置位。如果左右参数都是字符串,则位运算符将操作字符的,ASCII,值。,表达式名称结果,$a&$b,按位与 将把,$a,和,$b,中都为,1,的位设为,1,。,$a|$b,按位或将把,$a,或者,$b,中为,1,的位设为,1,。,$a$b,按位异或将把,$a,和,$b,中不同的位设为,1,。,$a,按位非将,$a,中为,0,的位设为,1,,反之亦然。,$a$b,右移将,$a,中的位向右移动,$b,次(每一次移动都表示“除以,2”,)。,其他运算符,字符串运算符,有两个字符串运算符。第一个是连接运算符(“,.”,),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(“,.=”,),它将右边参数附加到左边的参数后。,赋值运算符,基本的赋值运算符是“,=”,。你一开始可能会以为它是“等于”,其实不是的。它实际上意味着把右边表达式的值赋给左边运算数。,实例:,运算符优先级,下表从低到高列出了运算符的优先级。,结合方向 运算符,左,左,or,左,xor,左,and,右,print,右,=+=-=*=/=.=%=&=|=,左,?:,左,|,左,&,结合方向 运算符,左,|,左,左,&,无,=!=!=,无,=,左,左,+-.,左 *,/%,右,!+-(,int,)(float)(string)(array)(object),右,无,new,操作符,三元运算符,对三个值进行操作,(?:)$a=0?“,zero”:”other,”;,echo$a=0?”,zero”:”other,”;,操作符的比较,赋值操作符,(=),等号右面的值,赋给左面的变量,比较操作符,(=),符号左右的值是否相等,值相等返回真,比较操作符,(=),符号左右的值相等并且类型相同,返回真,
展开阅读全文