3.   常量

3.1. 常量的含义

常量,就是一个用于存储“不会(也不允许)变化的数据”的标识符。

比如圆周率,在一定的应用场景中,就是是一个固定的值(人为规定为某个值)。

3.2.常量的两种定义形式

3.2.1.  define()函数形式:

define(‘常量名’,  对应的常量值);

常量名推荐使用“全大写”。

3.2.2.  const关键字定义:

const  常量名 =  对应的常量值;

 

3.3. 常量的两种取值形式

3.3.1.  直接使用:

echo  常量名;          //注意:使用常量,前面不带”$”符号,也不能有引号

3.3.2.  使用constant()函数以取值:

echo  constant(‘常量名’);         //注意,此时常量名要用引号引起来。

哪些数据类型有常量nanjava_哪些数据类型有常量nanjava

3.4. 变量与常量的区别:

1,变量的数据可以变化(重新赋值),常量不可以。

2,变量可以存储各种数据类型,而常量只能存储简单数据类型。

3,给变量赋值可以是“计算”结果,但给常量赋值,只能是“直接写出的值”(字面值)

哪些数据类型有常量nanjava_进制_02

3.5. 判断一个常量是否存在:defined();

判断的结果返回:true(表示存在)或false(表示不存在)

形式:

if( defined (‘常量名’)  ) {             //如果该常量名存在,则....

//....做什么事情。。。。

}

演示:

哪些数据类型有常量nanjava_PHP_03

 

3.6. 预定义常量

 

预定义常量就是PHP语言内部预先定义好的常量,我们可以直接使用。

比如:PHP_VERSION,  PHP_OS,  PHP_INT_MAX,  M_PI等。

PHP_VERSION: 表示当前php的版本信息

PHP_OS:           表示当前php运行所在的系统信息

PHP_INT_MAX:       表示当前版本的php中的最大的整数值

M_PI:               表示圆周率π(一个有10多位小数的数)

 

查手册,预定义常量如下:

哪些数据类型有常量nanjava_哪些数据类型有常量nanjava_04

 

3.7. 几个魔术常量

含义:

魔术常量也是常量,只是在形式上为常量,而其值其实是“变化”的。

 

他们也是系统中预先定义好的,也就几个,下面是最常用的 3个:

__DIR__               :代表当前php网页文件所在的目录

__FILE__             :代表当前php网页文件本身的路径

 __LINE__,        :代表当前这个常量所在的行号

哪些数据类型有常量nanjava_进制_05

今日总结

变量:

用于存储数据的一个“标识符”——就是变量名。

变量的命名规则:

基本规则:

以字符,下划线,数字构成,并不能以数字开头

行业规则:

尽量见名知意。

大驼峰命名法,小驼峰命名法

变量的4种基本操作:

赋值,取值,判断isset(),  销毁unset()

变量的传值方式:

概念:将一个变量传给另一个变量。

值传递:各自独立,互不干扰。

引用传递(传地址,地址传递):他们都指向同一个数据!

改变其中任何一个,另一个也跟着改变。

但:unset()其中任何一个,另一个不受影响。

4个预定义变量:

$_GET, $_POST, $_REQUEST,

$_SERVER:一些在请求中的客户端或服务器端的固定的数据。

比如:REMOTE_ADDR,  SERVER_ADDR,  DOCUMENT_ROOT,  PHP_SELF

可变变量:

$$v1;

 

常量:

定义形式:

define(“常量名”, 值);

const  常量名  =  值;

const  C1  =  1+2;

使用形式:

直接使用常量名;

echo  PI;

constant(“常量名”)

echo  constant(‘PI’);

判断常量是否存在: defined(“常量名”)

预定义常量:

PHP_INT_MAX(php中的整数的最大值)

魔术常量:

__DIR__

__FILE__

__LINE__

4.   数据类型

4.1. 数据类型分类与概述

4.1.1.  标量类型:

标量类型也可以理解为“基本类型”,“简单类型”。

标量类型包括如下4种:

字符串类型:string

就是一串字符,当做一个整体,表示一个连续有确定顺序的字符串。

 

整数类型:integer, int

 

浮点数: double,float

就是数学上的小数。

 

布尔类型: boolean, bool

表示某种只有两个状态(可能值)的数据,比如性别,是否毕业,吃没吃饭;

 

4.1.2.  复合类型:

就是“数组”(array)和“对象”(object)两种。

4.1.3.  特殊类型:

空类型null: 有且只有一个数据可以使用,那就是null

资源类型resource:表示一种外部的可供php使用(操作)的资源(比如图片,数据库,文件等)

4.2. 整型integer/int

4.2.1.  四种书写形式

可以有4种直接书写的形式:

10进制形式:

$n1 = 123;

8进制形式:

$n1 = 0123;                 //以0开头,只能出现0-7这8个数字

16进制形式:

$n1 = 0x12A34;           //以0x开头,可以出现0-9,A-F这16个数字            

2进制形式:

$n1 = 0b1011011010;   //以0b开头,只能出现0和1这2个数字

 

下表为进制对比:

10

进制

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

8

进制

0

1

2

3

4

5

6

7

10

11

12

13

14

15

16

17

20

16

进制

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

10

2进制

0

1

10

11

100

101

110

111

1000

1001

1010

1011

1100

1101

1110

1111

10000

哪些数据类型有常量nanjava_PHP_06

4.2.2.  进制的相互转换

直接通过系统函数来进行,能完成:

10进制转为2, 8, 16进制:

decbin():将10进制转为2进制

decoct():将10进制转为8进制

dechex():将10进制转为16进制

或:

2, 8, 16进制转为10进制:

bindec():将2进制数字字符串转为10进制

octdec():将8进制数字字符串转为10进制

hexdec():将16进制数字字符串转为10进制

哪些数据类型有常量nanjava_哪些数据类型有常量nanjava_07

总结一下进制转换的单词:

dec:10进制

oct: 8进制

hex: 16进制

bin:  2进制

进制转换案例:

表单上有个输入框,一个下拉列表(包含6种转换),以及一个按钮“转换”。实现可灵活进行进制转换的功能。

哪些数据类型有常量nanjava_字符串_08

思考题:

怎么将一个8进制的数, 转换为16进制?

4.3. 浮点型double/float

浮点数就是相当于数学上的“小数”

两种书写形式:

常规形式(带小数点):

$f1 = 0.1;                     //或者1.23;   123.0;

科学计数法形式(带e):

$f2 = 1.23e3;        //表示1.23 乘以10的3次方

$f3 = 123e2;         //这个也是浮点数,虽然其结果值是一个“整数”(12300)

 

特别注意:浮点数不要随便做相等比较(==:因为浮点数进行相等比较,是“不可靠”的:

$v1 = 0.1 + 0.2;

$v2 = 0.3;

问:$v1和$v2相等吗?

那怎么办?

需要在考虑精度的基础上,将浮点数转换为整数,然后进行“比较大小”,此时,在精度范围内,如果相等,我们就认为是相等的。将上述程序改造为:

哪些数据类型有常量nanjava_字符串_09

 

4.4. 布尔型boolean

 

哪些数据类型有常量nanjava_哪些数据类型有常量nanjava_10

 

只有两个数据值: true,  false(不区分大小写)

在需要当做“布尔值”进行判断或比较的时候,以下数据会被当作布尔值的  false:

false,  0,  0.0,  “”,   null,  ‘0’,  空数组

其余都被当做布尔值的 true。

常见应用代码类似这样:

$v1 = 某某值;

if(  $v1  ) { //此时,如果$v1为上述值之一,就会当做false,不执行其中的代码。

。。。代码。。。

}

//而对于其他值,就会当做true,因此就会执行其中的代码。

1.1.字符串型string

可以使用单引号或双引号来表示(引起来)。

表示一串“连续的字符”,最短的字符串是“空字符串”,比如: $str1  =  “”。

注意:这个不是空字符串:  “  ”,  因为其中包括了1个空格字符。

$name  = “张三”;

$edu = ‘北京大学’;

$title = “关于微信应用的几个改进建议”;     //文章标题

$v1 = ‘’;        //这也是字符串(空字符串),   跟null不同!!!

$v2 = ‘123’;          //这还是字符串

$v3 = “false”;        //这仍然是字符串

 

特别注意

双引号字符串中,如果出现“$”符号,则该符号后的连续字符(单词)会被识别为一个变量名。

如果识别成功(即确实存在该变量),则会将该变量转换为实际内容。

 

如果识别失败(即实际没有该变量),则会报错。

 

 

只有两个数据值: true,  false(不区分大小写)

在需要当做“布尔值”进行判断或比较的时候,以下数据会被当作布尔值的  false:

false,  0,  0.0,  “”,   null,  ‘0’,  空数组

其余都被当做布尔值的 true。

常见应用代码类似这样:

$v1 = 某某值;

if(  $v1  ) { //此时,如果$v1为上述值之一,就会当做false,不执行其中的代码。

。。。代码。。。

}

//而对于其他值,就会当做true,因此就会执行其中的代码。