|
[笔记]《PHP程序设计 第二版》学习笔记(二)
数据类型 Data Types
PHP提供了8种值的类型。4种是标量型(单值)的:整型、浮点数、字符串和布尔型;两种是复合型(集合)的:数组和对象;剩下的两种是特殊类型的:资源和NULL。
整型 Integers
整型都是整数,值的范围一般是从-2,147,483,648到+2,147,483,647。
整型直接量可以用十进制、八进制或十六进制表示。十进制值由不以0开头的数字序弄表示。八进制数由一个前导0和一个0-7的数字序列组成。十六进制值以0x开头,接着是数字0-9或字母A-F的序列。字母可以大写或小写,但是一般使用大写。这三种进制都可以包含正负号。
使用is_int()(或别名is_integer())来测试一个值是否为整型。
浮点型 Floating-Point Numbers
浮点型用十进制数字表示数值。通常,允许数值在1.7E-308和1.7E+308之间,精确到15位数字。
浮点型可以用科学记数法表示数。
浮点型的值仅仅是数的近似表示。这意味着写代码时要避免假定浮点数是完全精确的,例如使用==直接比较两个浮点数的值。一般的做法是移动若干次小数点位置后再比较。
使用is_float()(或别名is_real())来测试一个值是否是浮点数。
字符串 Strings
字符串直接量用单引号或双引号分隔。
双引号中的变量会进行解析,单引号中的则不解析。
双引号中的转义序列:
\"双引号 \n换行 \r回车 \t制表符 \\反斜杠 \$美元符号 \{左大括号 \}右大括号 \[左中括号 \]右中括号 \0~\777用八进制表示的ASCII字符 \x0~\xFF
单引号中的转义序列:
\\反斜杠 \'单引号
测试两个字符串是否相等,可以使用==比较操作符。
可以使用is_string()来测试一个值是否为字符串。
布尔型 Booleans
布尔值表示一个“真值”,用于说明某事是真或假。
在PHP中,下面的值为false:关键字false,整数0,浮点数0.0,空字符串("")和字符串"0",元素个数为0的数组,没有值或函数的对象,NULL值。
PHP提供了true和false关键字。
一个值不是假的就是真的,包括所有资源类型(Resorce)变量的值。
可以使用is_bool()来测试一个值是否是布尔型。
数组 Arrays
数组保存了一组值,这些值可以由位置(一个数字,0是第一位)或一些标识性的名称(字符串)一确定和关联。
Array()构造了一个数组。
有几种方式来遍历数组,最常用的是foreach循环。
可以使用多种排序函数对数组元素进行排序。
可以使用is_array()来测试一个值是否为数组。
对象 Objects
类(class)是面向对象设计的基本单元。类是一个包含属性(变量)和方法(函数)的结构的定义。类用关键字class来定义。
一旦定义了一个类,可以用关键字new来生成这个类的任意多个对象,类的属性和方法可以用->符号来访问。
可以使用is_object()来测试一个值是否为对象。
资源 Resources
资源实际上是整数。使用资源的主要好处是它会自己完成内存管理。
当没有任何对资源的引用时,它会自动关闭。
尽管资源可以自动销毁,大多数扩展提供了一个特定的关闭或结束函数。在合适的地方显式地调用该函数,这种方式比依赖于变量作用域来触发资源销毁更好。
可以使用is_resource()来测试一个值是否为资源。
NULL NULL
关键字NULL不区分大小写。
NULL值表示一个变量没有值。
可以使用is_null()来测试一个值是否为NULL。
变量 Variables
变量可以存放任意类型的值。在编译或运行时没有变量的类型检查。可以用其他不同类型的值替换一个变量的值。
在PHP中不需要用显式的语法来声明变量。
一个变量没有被设置值,则其值即为NULL。
可变变量 Variable Variables
可以引用名字存放在另外一个变量里的变量的值。
变量引用 Variable References
引用就是创建变量的别名。
在赋值之后,两个变量是同一个值的不同名字,销毁其中一个变量,不会影响到另一个变量的值。
函数可以通过引用返回值。
变量作用域 Variable Scope
由变量声明的位置控制的变量作用域(scope),决定程序的哪些部分可以访问变量。在PHP中有4种类型的变量作用域:局部作用域、全局作用域、静态变量和函数参数。
局部作用域
在一个函数中声明的变量就是此函数的局部变量,它只在该函数的代码中可见,在函数外面是不可访问的。而定义在函数外的变量(全局变量)在函数中也不可访问 。
全局作用域
在函数外声明的变量就是全局的变量,它们可以在程序的任何部分被访问。
默认不能在函数中访问全局变量。要让一个函数可以访问全局变量,可以在函数中使用关键字global来声明这个变量在函数中。
另一个方法是使用PHP的$GLOBALS数组来更新全局变量,而不是直接访问变量。
静态变量
静态变量仅在局部函数中存在,但当程序执行离开此作用域时,其值并不丢失。下一次调用函数时,上次执行得到的结果仍然得以保留。可以使用关键字static来声明静态变量。
函数参数
函数参数是局部的,意味着它们只能在它们的函数内有效。
垃圾收集 Garbage Collection
PHP使用引用计数(reference counting)和写时复制(copy-on-write)来管理内存。写时复制保证了在变量间复制值时不浪费内存,引用计数保证了不再需要时将内存交还给操作系统。
可以使用isset()来测试一个变量是否被设置甚至是空字符串。
可以使用unset()来移除一个变量的值。 |
|