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