PHP编程基础与实例教程 PHP Fundamentals & Practices
本章大纲 3-1 常量 3-2 变量 3-3 有关变量或常量状态的函数 3-4 PHP运算符 3-5 数据类型的转换
3-1 常量 1. 自定义常量 define()函数的语法格式: define(name,value[, boolean case_insensitive]) 功能:定义一个名字为name,值为value的常量。ase_insensitive参数的默认值为FALSE,表示常量名name大小写敏感(区分大小写);case_insensitive参数值如果为TRUE,表示常量名name大小写不敏感(不区分大小写)。 说明:常量名name为字符串类型数据,常量值value必须是标量数据类型数据。 注意 :常量名前面不加前缀“$”符号 。 常量的作用域是全局的,不存在使用范围的问题,可以在程序任意位置进行定义和使用常量。 常量一旦被定义,其值不能在程序过程中修改,也不能被销毁。
3-1 常量 2. 常量的内存分配 内存中专门为常量的存储分配了一个空间:常量存储区。常量存储区是一块比较特殊的存储空间,位于该存储空间的常量是全局的,且在程序运行期间不能修改和销毁。 例如程序define.php <?php //定义DATABASE常量,此时DATABASE常量名大小写敏感 define("DATABASE","student"); //定义USER_NAME常量,此时USER_NAME大小写敏感 define("USER_NAME","root",FALSE); //定义PASSWORD常量,此时PASSWORD大小写不敏感 define("PASSWORD","root",TRUE); echo DATABASE;//输出:student echo "<br/>"; echo USER_NAME;//输出:root echo password;//输出:root ?>
3-1 常量 2. 预定义常量 PHP还预定义了许多常量,这些常量无需使用define()函数定义,可直接在程序中使用。 1.__FILE__(FILE前后是两个下划线):当前正在处理的脚本文件名。 2.__LINE__(LINE前后是两个下划线):正在处理的脚本文件的当前行数。 3.PHP_VERSION:当前 PHP预处理器的版本,如'5.3.0'。 4.PHP_OS:PHP所在的操作系统的类型,如'Linux'。 5.TRUE:表示逻辑真;FALSE常量:表示逻辑假;NULL常量:表示没有值或值不确定。 6.DIRECTORY_SEPARATOR常量:表示目录分隔符,Unix或Linux操作系统环境时的值为“/”;Windows操作系统环境时的值为“\”。
3-2 变量 1. 变量基本概念 变量是用于临时存储数据的容器,这些数据可以是任意一种数据类型的数据。PHP中的变量名遵循以下规则: 1.变量名必须以美元符号($)开头,例如:$userName。 2.变量名的第一个字符必须是字母或下划线(不能是数字),变量名称可以包含字母、数字和下划线的组合。 3.PHP中的变量名是区分大小写的,这是一个非常重要的规则。这意味着$userName和$UserName是截然不同的两个变量。 例如:程序variable.php <?php //以下语句修改$userName变量的值 $userName = "张三"; $userName = "李四"; //以下语句既修改$sex变量的值,又修改了$sex变量的数据类型 $sex = FALSE; $sex = "男"; ?>
3-2 变量 2. 变量的内存分配
3-2 变量 3. 变量赋值方式 1.传值赋值方式 2.传地址赋值方式 例如程序byValue.php: <?php $age1 = 18; //以下语句进行传值赋值,变量$age1的值18赋值给变量$age2 $age2 = $age1; //以下语句修改变量$age2的值,此时变量$age2在内存中开辟新的空间存储值20 $age2 = 20; echo $age1;//该语句输出$age1变量的值为18 echo "<br/>"; echo $age2;//该语句输出$age2变量的值为20 ?> 3. 变量赋值方式 1.传值赋值方式 2.传地址赋值方式 例如程序byReference.php : <?php $age1 = 18; //以下语句进行传值赋值,变量$age1的值18赋值给变量$age2 $age2 = &$age1; //以下语句修改变量$age2的值,此时变量$age2在内存中开辟新的空间存储值20 $age2 = 20; echo $age1;//该语句输出$age1变量的值为20 echo "<br/>"; echo $age2;//该语句输出$age2变量的值为20 ?>
3-2 变量 4. 可变变量 PHP提供了一种特殊类型的变量:可变变量。可变变量允许PHP程序动态地改变一个变量的变量名,可变变量的工作原理是用一个变量的“值”作为另一个变量的“名”。 例如程序variableNameChanged.php : <?php $varname = "age"; //用$$varname取代$age。下面的代码等价于:$age = 20; $$varname = 20; echo $age; //输出$age变量的值:20 ?>
3-3 有关变量或常量状态的函数 1. 数据类型查看函数 1.gettype()函数 语法格式:string gettype ( mixed var ) 函数功能:gettype()函数需要变量名(带$符号)或常量名作为参数,该函数返回变量或常量的数据类型,这些数据类型包括:integer、double、string、array、object、unknown type等。 2.var_dump()函数 语法格式:void var_dump (mixed var ) 函数功能:var_dump()函数需要传递一个变量名(带$符号)或常量名作为参数,该函数可以得到变量或常量的数据类型以及对应的值,并将这些信息输出。 函数说明:调试程序时,经常使用var_dump()函数查看变量或常量的值、数据类型等信息。
3-3 有关变量或常量状态的函数 2. 检查常量或变量是否定义函数 1.defined()函数 语法格式:bool defined ( string name ) 函数功能:检查常量是否经过define()函数定义。该函数参数为常量名(注意常量名必须带双引号或单引号),如果常量经过define()函数定义,该函数返回布尔值TRUE,否则返回FALSE。 2.isset()函数 语法格式:bool isset ( mixed var ) 函数功能:检查变量var是否定义。该函数参数为变量名(带$号),如果变量已经定义,该函数返回布尔值TRUE,否则返回FALSE。
3-3 有关变量或常量状态的函数 3. 取消变量定义unset()函数 unset()函数语法格式:void unset ( mixed var ) 函数功能:取消变量var的定义。该函数的参数为变量名(带$符号),函数没有返回值。
3-3 有关变量或常量状态的函数 4. 检查变量是否为“空” 1.empty()函数 语法格式:boolean empty ( mixed var ) 函数功能:用于检查变量var是否为“空”,该函数参数var为变量名(带$号)。如果变量var为空,则empty()函数返回TRUE,否则返回FALSE。 注意:使用empty()函数时,变量为“空”的意义为:若变量var的值为“”、0、“0”、0.0、NULL、FALSE或array(),都将视为空。 empty() 函数只用于检测变量是否为“空”,传递其它参数都将造成程序解析错误。
3-3 有关变量或常量状态的函数 4. 检查变量是否为“空” 2.is_null()函数 语法格式:boolean is_ null( mixed var ) 函数功能:检查变量var是否为NULL,如果值为NULL则返回 TRUE,否则返回 FALSE。 函数说明:is_null()函数在用于判断变量是否为NULL时,可以看做是isset()函数的反函数。下面的三种情况变量的值为NULL。 (1).变量未经定义; (2).变量的值赋值为NULL; (3).变量经unset()函数处理后;
3-3 有关变量或常量状态的函数 5. 数据类型检查函数 函数名 功能 语法格式 is_bool 检测变量或常量是否是布尔型 bool is_bool( mixed var ) is_string 检测变量或常量是否是字符串 bool is_string( mixed var ) is_int is_integer is_long 检测变量或常量是否是整数 bool is_int( mixed var ) is_double is_float is_real 检测变量或常量是否是浮点型 bool is_float( mixed var ) is_numeric 检测变量或常量是否为数字或数字字符串 bool is_numeric( mixed var ) is_scalar 检测变量或常量是否是标量数据类型 bool is_scalar( mixed var ) is_array 检测变量是否是数组 bool is_array( mixed var ) is_object 检测变量是否是一个对象 bool is_object( mixed var ) is_resource 检测变量是否为资源类型 bool is_resource( mixed var )
3-4 PHP运算符 1. 算术运算符 运算符名称 用法 结果 取反 -$a $a 的负值。 加法 $a + $b $a 和 $b 的和。 减法 $a - $b $a 和 $b 的差。 乘法 $a * $b $a 和 $b 的积。 除法 $a / $b $a 除以 $b 的商。 取余 $a % $b $a 除以 $b 的余数。
3-4 PHP运算符 2. 递增/递减运算符 运算符名称 用法 运行过程 前加 ++$a $a的值加一,然后返回$a。 后加 $a++ 前减 --$a $a的值减一,然后返回 $a。 后减 $a-- 返回$a,然后将$a的值减一。
3-4 PHP运算符 3. 赋值运算符 赋值运算符“=”是将“=”右边表达式的值赋给左边的变量。赋值运算符产生的表达式为赋值表达式,该表达式的值为“=”左边的变量值。 PHP还提供适合于所有二元算术养生法和字符串运算符的“组和运算符”:+=,-=, *=, /=, %=, .=等。这样可以在一个表达式中使用一个值(如$y)并把表达式的结果赋给它。 PHP组合运算符 等价格式 $x += $y $x = $x + $y $x -= $y $x = $x - $y $x *= $y $x = $x * $y $x /= $y $x = $x / $y $x %= $y $x = $x % $y $x .= $y $x = $x . $y ....
3-4 PHP运算符 4. 比较运算符 运算符名称 用法 比较结果 等于 $a == $b(注意是两个等号) 如果$a与$b的值相等,结果为TRUE;否则为FALSE。 全等 $a === $b(注意是三个等号) 如果$a与$b的值相等,且它们的类型也相同,结果为TRUE;否则为FALSE。 不等 $a != $b 如果$a与$b的值不相等,结果为TRUE;否则为FALSE。 $a <> $b 非全等 $a !== $b(注意是两个等号) 如果$a与$b的值不相等,或者它们的数据类型不同,结果为TRUE;否则为FALSE。 小与 $a < $b 如果 $a的值小于 $b的值,结果为TRUE;否则为FALSE。 大于 $a > $b 如果 $a的值大于 $b的值,结果为TRUE;否则为FALSE。 小于等于 $a <= $b 如果 $a的值小于等于 $b的值,结果为TRUE;否则为FALSE。 大于等于 $a >= $b 如果 $a的值大于 等于$b的值,结果为TRUE;否则为FALSE。
3-4 PHP运算符 5. 逻辑运算符 运算符名称 用法 结果 逻辑与 $a && $b 如果$a与$b的值都为TRUE,结果为TRUE;否则为FALSE $a and $b 逻辑或 $a || $b 如果$a与$b的值有一个为TRUE,结果为TRUE;否则为FALSE $a or $b 逻辑非 ! $a 如果$a的值为TRUE,结果为FALSE;否则为TRUE 逻辑异或 $a xor $b 如果$a与$b的值中只有一个值为TRUE,结果为TRUE;否则为FALSE
3-4 PHP运算符 6. 字符串连接运算符 字符串连接运算符只有一个点运算符“.”,使用“.”运算符可以将两个字符串连接成一个字符串。
3-4 PHP运算符 7. 错误抑制运算符 当PHP表达式产生错误而又不想将错误显示在页面上时,可以使用错误抑制运算符“@”。将“@”运算符放置在PHP表达式之前,该表达式产生的任何错误信息将不会输出。这样做有两个好处: 1.安全:避免错误信息外露,造成系统漏洞。 2.美观:避免浏览器页面出现错误信息,影响页面美观。
3-4 PHP运算符 8. 条件运算符 条件运算符的语法格式为:表达式1?表达式2:表达式3 由条件运算符组成的表达式称为条件表达式,条件表达式的执行过程为:如果表达式1 的值为TRUE,则整个条件表达式的值为表达式2的值;如果表达式1 的值为FALSE,则整个条件表达式的值为表达式3的值。条件运算符中有三个操作数,因此条件运算符为三目运算符。
3-4 PHP运算符 9. 类型运算符 PHP 5提供了类型运算符instanceof,该运算符用于判断一个对象是否是某个类的对象。
3-4 PHP运算符 10. 执行运算符 执行运算符使用反引号(`)(注意这不是单引号!一般是键盘上ESC下面的按键)。执行运算符将尝试将反引号中的字符串内容作为操作系统系统命令来执行(例如:linux的shell命令或Windows的DOS命令),并返回该系统命令的执行结果。
3-4 PHP运算符 11. 位运算符 运算符名称 用法 结果 与操作符:& $a & $b $a与$b位值都为1时,结果为1;否则为0。 或操作符:| $a | $b $a与$b位值都为0时,结果为0;否则为1。 异或操作符:^ $a ^ $b $a与$b位值中只有一个为1时,结果为1;否则为0 非操作符:~ ~$a $a中为0的位,结果为1;$a中为1的位,结果为0。 右移操作符:>> $a >> $b $a中的位向左移动$b次(每一次移动都表示$a乘以2) 左移操作符:<< $a << $b $a中的位向右移动$b次(每一次移动都表示$a 除以2)
<,<=,>,>= 3-4 PHP运算符 12. 运算符优先级 由高优先级到低优先级运算符 () !,~,++,-- *,/,% +,-,. <<,>> <,<=,>,>= ==,!=,===,!== & ^,| &&,|| ?: =,+=,-=,*=,/=,%=,.= and,xor,or
3-5 数据类型的转换 1. 类型自动转换 类型自动转换是指:在定义变量或常量时,不需要指定变量或常量的数据类型,由PHP预处理器根据具体应用环境,将变量或常量转换为合适的数据类型。 类型自动转换基本规则如下: 1.布尔型数据参与算术运算时,TRUE被转换为整数1,FALSE被转换为整数0;NULL参与算术运算时,被转换为整数0。 2.浮点数与整数进行算术运算时,将整数转换为浮点数后,再进行算术运算。
3-5 数据类型的转换 1. 类型自动转换 3.参与算术运算的字符串,只有以数字开头的字符串才会被认作数字。字符串开头部分符合整数格式时,字符串将被转换为整数,例如在执行算术运算时字符串”3rd degree” 将被转换为整数3;字符串开头部分符合浮点数格式时(字符串开头中可以包含'.'、 'e'或'E'字符),字符串会被转换为浮点数,例如在执行算术运算时字符串”3.5”、”-4.01”、”4.2e6”、”-4.1 degree”分别被转换为浮点数:3.5、-4.01、4200000、-4.1。如果字符串不是以数字开头,将被转换整数0,例如在执行算术运算时,字符串”Catch 22”将被转换为数整数0。
3-5 数据类型的转换 1. 类型自动转换 4.在进行字符串连接运算时,整数、浮点数将被转换为字符串类型数据。例如12、12.3 转换为字符串后为:"12"、"12.3"。布尔型TRUE将被转换成字符串"1",布尔型FALSE和NULL将被转换成空字符串""。这就解释了为何语句“echo TRUE;”打印到页面上为1,而语句“echo FALSE;”打印到页面上为空字符串。 5.在进行逻辑运算时,空字符串""、字符串"0"、整数0、浮点数0.0、NULL以及空数组将被转换为布尔型为FALSE;其它数据将被转换为布尔型TRUE(注意字符串"0.0"将被转换为布尔型TRUE)。
3-5 数据类型的转换 1. 强制类型转换 强制类型转换允许程序员手动将变量的数据类型转换成为指定的数据类型。PHP提供了三种强制类型转换方法: 1.在要类型转换的变量或常量之前加上用括号括起来的目标数据类型。 2.使用类型转换函数:intval()、floatval()、strval()。 3.使用通用类型转换函数settype() 注意:使用强制类型转换将浮点数转换为整数时,将自动舍弃小数部分,只保留整数部分;其它转换规则遵循自动转换的规则。