php02

第二天  PHP的基本语法02

=========================================================================================

7. 变量

7.1 变量的声明

① 变量的定义

变量是用于临时存储值的容器。这些值可以是数字、文本、或者复杂得多的排列组合。是用于跟踪几乎所有类型信息的简单工具。

② PHP变量特定      

PHP是一种非常弱的类型语言。在大多数编程语言中,变量只能保持一种类型的数据,而且这个类型必须在使用变量前声明,

例如C语言中。而在PHP中,变量的类型通常不是由程序员设定的,确切地说,是根据该变量使用的上下文在运行时(即变量

的值)决定的。 PHP不要求在使用变量之前声明变量,当第一次给一个变量赋值时,你才创建了这个变量。

③ 定义变量

 PHP的变量声明是以$符开始的,后面跟大小写字母,数字和下划线,但不能以数字开头。

 可以使用函数unset( )释放指定的变量,isset( )函数检测变量是否设置,empty( )函数检查一个变量是否为空。

7.2 变量的命名

① 变量名与 PHP 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。

② 变量的名称是对大小写敏感的。

③ 但内置结构和关键字以及用户自定义的类名和函数名都是不区分大小写的。如:echo、while、function名称等。

7.3 可变变量

7.4 变量的引用赋值

8. 数据类型

8.1  类型介绍

① PHP 支持八种原始类型。 

四种标量类型: 

布尔型(boolean) 

整型    (integer)       表示一个整数

浮点型(float)(浮点数,也作double) 

字符串(String) 

两种复合类型: 

数组(Array) 

对象(Object) 

最后是两种特殊类型: 

资源(Resource)

NULL

② 在PHP中,变量的类型通常不是由程序员设定的,确切地说,是根据该变量使用的上下文在运行时(即变量的值)决定的。

            ③ 使用函数var_dump( )查看表达式的值和类型

8.2  布尔型(boolean)

① 这是最简单的类型。boolean 表达了真值,可以为 TRUE 或 FALSE,即“真”或“假”。

② 当其他类型转换为 boolean类型 时,以下值被认为是FALSE: 

布尔值 FALSE

整型值 0(零)

浮点型值 0.0(零)

空白字符串和字符串"0"

没有成员变量的数组

没有单元的对象(仅适用于 PHP 4)

特殊类型 NULL(包括尚未设定的变量)

所有其它值都被认为是 TRUE(包括任何资源)。

③ 特点

echo 布尔值  true会输出1, false输出空字符串

empty判读布尔值变量, true会返回false , false返回true

8.3  整型(integer)

  ① 整型值可以用十进制,十六进制或八进制符号指定,前面可以加上可选的符号(- 或者 +)代表数值的正负。

               ②整数值有最大的使用范围,这与平台有关,对于32位系统而言范围:-2147483648~2147483647,PHP不支持无符号整数。

      如果超出了则变成了float型。

8.4  浮点型(float或double)

① 浮点数(也叫双精度数或实数)是包含小数部分的数。通常用来表示整数无法表示的数据,如金钱值、距离值、速度值等。

   浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度。

② 可以用科学计数法表示

③ 取整 的函数  round   floor    ceil

④ 浮点数的精度问题

8.5  字符串(String)

① string是一系列字符。在 PHP 中,字符和字节一样,也就是说,一共有 256 种不同字符的可能性。

    这也暗示 PHP 对 Unicode 没有本地支持。

② 一个字符串变得非常巨大也没有问题,PHP 没有给字符串的大小强加实现范围,所以完全没有理由担心长字符串。

③ 字符串的三种定义方式

单引号

双引号

定界符

8.6  数组(Array)

①  PHP 中的数组实际上是一个有序图。图是一种把 values 映射到 keys 的类型。此类型在很多方面做了优化,

 因此可以把它当成真正的数组来使用,或列表(矢量),散列表(是图的一种实现),字典,集合,栈,队列以及更多可能性。

 因为可以用另一个 PHP 数组作为值,也可以很容易地模拟树。

② PHP中可以使用多种方式构建一个数组,

8.7  对象(Object)

① 在PHP中,对象和数组一样都是一种复合数据类型。但对象是一种更高级的数据类型。一个对象类型的变量,

   是由一组属性值和一组方法构成,其中属性表明对象的一种状态,方法通常用来表明对象的功能。

8.8  资源类型(Resource)

① 资源是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。

② 由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此无法将其它类型的值转换为资源

③ PHP4Zend引擎引进了资源计数系统,可以自动检测到一个资源不再被引用了(和 Java 一样)。

    这种情况下此资源使用的所有外部资源都会被垃圾回收系统释放。

8.9  NULL类型

① 特殊的 NULL 值表示一个变量没有值。NULL类型唯一可能的值就是NULL,表示一个变量的值为空,NULL不区分大小写。

② 在下列情况下一个变量被认为是 NULL: 

被赋值为 NULL值的变量。 

尚未被赋值的变量。 

被unset()函数销毁的变量。

8.10 伪类型介绍

①  伪类型并不是PHP语言中的基本数据类型,只是因为PHP是弱类型语言,所以在一些函数中,一个参数可以接收多种类型的数据,

     还可以接收别的函数作为回调函数使用。

②  伪类型

mixed:说明一个参数可以接受多种不同的(但并不必须是所有的)类型。 

number:说明一个参数可以是 integer 或者 float。

callback:有些诸如 call_user_function() 或 usort() 的函数接受用户自定义的函数作为一个参数。

Callback 函数不仅可以是一个简单的函数,它还可以是一个对象的方法,包括静态类的方法

一个 PHP 函数用函数名字符串来传递。可以传递任何内置的或者用户自定义的函数,除了 

array(),echo(),empty(),eval(),exit(),isset(),list(),print() 和 unset()。

9. 数据类型之间的互相转换

9.1 类型转换

① PHP 在变量定义中不需要(或不支持)明示的类型定义;变量类型是根据使用该变量的上下文所决定的。

② 类型转换是指将变量或值从一种数据类型转换成其他数据类型。转换的方法有两种:

自动转换

强制转换

         9.2 强制类型转换

PHP 中的类型强制转换和 C 中的非常像:在要转换的变量之前加上用括号括起来的目标类型

(int),(integer) - 转换成整型

(bool),(boolean) - 转换成布尔型

(float),(double),(real) - 转换成浮点型

(string) - 转换成字符串

(array) - 转换成数组

(object) - 转换成对象

注: 注意在括号内允许有空格和制表符,为了将一个变量还原为字符串,还可以将变量放置在双引号中。 

9.3 自动类型转换

布尔环境

字符串环境

数值环境

9.4 变量类型的测试函数

is_bool():判断是否是布尔型

is_int()、is_integer()和is_long():判断是否为整型。

is_float()、is_double()和is_real():判断是否为浮点型

is_string():判断是否为字符串

is_array():判断是否为数组

is_object():判断是否为对象

is_resource():判断是否为资源类型

is_null():判断是否为null

is_scalar():判断是否为标量

is_numeric():判断是否是任何类型的数字和数字字符串

is_callable():判断是否是有效的函数名

   bool settype ( mixed var, string type )是将变量 var 的类型设置成 type。 

10. 常量

10.1 常量的定义与使用

① 常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间一个常量一旦被定义,就不能再改变或取消定义。

② 常量默认为大小写敏感。按照惯例常量标识符总是大写的。

③ 量名和其它任何 PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。

④ 常量的范围是全局的。不用管作用域就可以在脚本的任何地方访问常量。

⑤ 我们可以用 define() 函数或 const语法来定义常量。

10.2 常量与变量

① 常量和变量不同: 

常量前面没有美元符号($); 

常量只能用 define() 函数定义,而不能通过赋值语句; 

常量可以不用理会变量范围的规则而在任何地方定义和访问; 

常量一旦定义就不能被重新定义或者取消定义; 

常量的值只能是标量。

② 可以用函数 constant() 来读取常量的值。

③ 用 get_defined_constants() 可以获得所有已定义的常量列表 

10.3 预定义常量

① 魔术常量

__LINE__

__FILE__

__FUNCTION__

__CLASS__

__METHOD__

② 系统常量

PHP_OS: 执行PHP解析的操作系统名称

                    PHP_VERSION: 当前PHP服务器的版本。

11. PHP的运算符

11.1 什么是运算符

① 定义

运算符是可以通过给出的一或多个值(用编程行话来说,表达式)来产生另一个值(因而整个结构成为一个表达式)的东西。

所以可以认为函数或任何会返回一个值(例如 print)的结构是运算符,而那些没有返回值的(例如 echo)是别的东西。

② 有三种类型的运算符:

一元运算符:  只运算一个值,例如 !(取反运算符)或 ++(加一运算符)。

二元运算符:  有两个操作数,PHP支持的大多数运算符都是这种。

三元运算符:  ? :。它应该被用来根据一个表达式在另两个表达式中选择一个,而不是用来在两个语句或者程序路线中选择。

    把整个三元表达式放在扩号里是个很好的主意。

11.2 算数运算符

+           加法运算

- 减法/去负 运算

*           乘法运算

/           除法运算

%           取余运算(取模运算)

++         累加

--           累减

11.3 字符串运算符

.             字符串连接符

11.4 赋值运算符

=         将一个值或表达式的结果赋给变量

+= 将变量与所赋的值相加后的结果赋给该变量

-= 将变量与所赋的值相减后的结果赋给该变量

*= 将变量与所赋的值相乘后的结果赋给该变量

/= 将变量与所赋的值相除后的结果赋给该变量

%= 将变量与所赋的值求模后的结果赋给该变量

.= 将变量与所赋的值相连后的结果赋给该变量  

11.5 比较运算符

>         大于 当左边大于右边时返回true,否则返回false

<         小于 当左边小于右边时返回true,否则返回false

>=     大于等于 当左边大于等于右边时返回true,否则false

<=     小于等于 当左边小于等于右边时返回true,否则false

==     等于 两边操作数的值相等时返回true,否则false

===     全等于 两边值相等并且类型相等返回true,否则false

<>或!= 不等于 两边值不等时返回true,否则返回false

!==     非全等于 两边值与类型都相同时返回false,否则true

11.6 逻辑运算符

and或&& 逻辑与 当两边操作数都为true时,返回true,否则返回false

or或|| 逻辑或 当两边操作数都为false时,返回false,否则返回true

not或! 逻辑非 当操作数为true时返回false,否则返回true

xor 逻辑异或 当两边操作数只有一个为true时,返回true,否则返回false

11.7 位运算符

& 按位与 只有参与运算的两位都为1时,运算结果才为1,否则为0.

| 按位或 只有参与运算的两位都为0时,运算结果才为0,否则为1.

^ 按位异或 只有参与运算的两位不同,运算结果才为1,否则为0.

按位非 将用二进制表示的操作数中的1变成0,0变成1.

<< 左移 将左边的操作数在内存中的二进制数据右移右边操作数指定的位数,右边移空的部分补上0

>> 右移 将左边的操作数在内存中的二进制数据左移右边操作数指定的位数,左边移空的部分补上0

11.8 其他运算符

? : 三元运算符,可以提供简单的逻辑判断。

`` 反引号(` `)是执行运算符,PHP将尝试将反引号中的内容作外壳命令来执行,并将其输入信息返回

@ 错误控制运算符,当将其放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

=> 数组下标指定符号,通过此符号指定数组的键与值。

-> 对象成员访问符号,访问对象中的成员属性或成员方法。

instanceof 类型运算符,用来测定一个给定的对象是否来自指定的对象类。

11.9 运算符的优先级

见图

可以用()来控制优先顺序

12. 表达式

表达式是 PHP 最重要的基石。在 PHP 中,几乎所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是“任何有值的东西”。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章