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