传智播客PHP学习笔记第三天6页

传智播客PHP学习笔记第三天6页
传智播客PHP学习笔记第三天6页

时间戳表示时间的方法,

从某一个时刻(1970-1-1 0:0:0)开始,到当前,没过一秒,数加1;

这个数据也是在计算机内采用一个整型数据来表示的。

浮点数:双精度数。

定义浮点数可以采用科学计数法

//在描述的时候,通常

Number = int + float

特别注意:由于使用浮点数时需要表示精度,因此有些数据在保存的时候,会丢失精度。所以不要通过判断两个浮点数是否相等来获得业务逻辑。

字符串:

定义字符串

单引号

使用单引号包含需要定义的字符串内容即可:

双引号:

单引号与双引号的根本区别在于,是否可以解析字符串内部的变量。

双引号可以解析,而单引号不行。

因此双引号的解析速度要低于单引号的解析速度,能够使用单引号就尽量使用单引号。

如果使用单引号定义时,需要定义的字符串内部包含单引号

碰到这个情况,应该转义内部的引号:

究竟哪个变量会被解析?

是否能被解析取决于是单引号还是双引号定义的:

如果在解析变量时不能清晰的区分变量名,那么不能正确的识别需要解析的变量:

可以在需要解析的变量周围使用大括号包含起来:

大括号在双引号内,碰到$时,会去解析:

转义符号的使用\ 的使用:

如果在字符串的最后使用转义字符时:

需要将最后的转义字符\ 进行转义:

在双引号定义字符串时,转义字符还有特殊的含义,可以转义很多有其他含义的字符:

还可以转义8进制或者16进制数,所对应的ascii码内的字符:

a 97

A 65

除了单引号和双引号,还有两种定义字符串的方式:

当需要定义一个比较复杂的字符串时,此时单引号和双引号就略显乏力。

复杂:1,多行2,包含一些需要特殊处理的字符

Php还支持一种专门定义复杂字符的形式,定界符:

Heredoc nowdoc

<<<定界符的开始标记

字符串的内容

内容

定界符的结束标记

其中开始标记与结束标记应该一致

Heredoc

Nowdoc

Heredoc与nowdoc在形式上,只有开始的标签有区别,nowdoc的开始标签存在单引号。

在使用上,heredoc类似双引号可以解析内部的变量,而nowdoc不能解析内部的变量。

总结:如果单引号,双引号,定界符,都是为定义字符串而用。

强调,我们经常使用定界符的形式来定义html代码javascript代码字符串。

注意:关于定界符的结束标记:有个严格的要求

结束标记只能单独在一行,而且在此行不能存在其他字符。(必须定格写)

布尔类型

真假

布尔型只有2个值true 表示真false表示假,不区分大小写

有时可能会使用1 或者0 表示true或false。但是注意,1,0 是在运行时被转换成了true和false 1,0本身并没有真假的含义。

复合数据类型,一个数据表示多个值

无论数组还是对象多应该可以保存多个值。

数组:

是一组数据的集合。

如何使用数组内的某个值呢?如何定位一个数组内的元素。

数组是由元素组成的。

元素是由一个键值对来表示的。一个元素是由一个键对应上一个值来标志

我们是通过数组元素的键,来引用某个元素的值的。

定义一个数组:

采用array()的语言结构:

元素与元素之间采用逗号分割。而元素键与值之间使用=> 来表示

获得一个数组的元素的值:

利用中括号语法,来定位数组内的某个键值对:

我们可以通过中括号语法,获得某个数组元素的值,设置某个数组元素值,为数组增加元素,删除某个数组元素。

判断一个数组内是否存在某个元素:

创建数组的另外的形式:

元素的下标:

一个数组元素的下标只能是字符串型或者是整型。

我们在定义数组元素时,可以不指定元素下标:那么系统会为元素自动分配整型下标。整型的值是当前已存在的数组元素的最大的整型下标+1;默认是从0开始。

[]的额外用法:

字符串如果被看成是字符的集合的话,那么每一个字符就是字符串内的某个元素。

因此,我们在访问字符串时,可以通过中括号语法来获得字符串内的某个字符元素。

字符串的特殊性还在于:上面的中括号,还可以使用大括号来代替:

注意,以上的操作,下标的位置是从0开始,每个字节增加一个。

1111 1111 0000 0000 255 0

当一个字符串内的字符不是由单字节组成的话?

字符:我们看到的(汉字,英文字母,数字等等)

字节:8个bit位。

很多字符都是有多字节组成的:

例如

在utf8编码下汉字由3个字节组成。

康3个字节

中括号(大括号)获取某个字符元素的操作是有限制的,仅仅使用与所有的字符都是单字节字符的情况。

符gbk编码下一个汉字占用2个字节。

对象:

由于是集合数据类型,就应该至少提供保存多个值的能力。

除此之外,对象还可以有处理保存的数据的能力。

有时会将对象称之为有生命力的数组。

特殊数据类型

资源

在通过php去操作不完全属于PHP的资源时。例如数据库的连接管理,操作文件的管理。都会产生资源:

不能通过用户手动创建,而需要通过php的内置函数来获得资源。

同样都是资源型数据,但是也有类型之分:

NULL

NULL只有一个值就是NULL 不区分大小写。

表示什么都没有。

不是0

不是空字符串‘’;

当我们直接使用一个不存在的变量时:

当使用一个被unset掉了的变量时:

当为一个变量赋值为NULL时:

有时将一个对象赋值为null,用于销毁该对象。

伪类型:

在进行对程序的描述时,有时需要某些不存在的类型:

1,number 指的是整型和浮点型。

2,mixed类型:类型不确定,可能是多个类型之一:

3,callback,指的是期望的数据是一个可以被调用执行的函数。(回调)

4,callable,指的是期望的数据是一个可以被调用的结构。指的是一个对象的方法。(可调)类型转换:

为了保证程序的顺利执行,会在执行过程中,将数据向合适的类型做转换。转换的过程分成(强制,自动)。称之为类型转换;

其中:

强制类型转换:用户通过用户脚本将数据进行类型转换。(手动类型转换)

自动类型转换:不需要用户脚本参与系统将类型自动发生变化。

如何强制

(希望转换数据类型) 数据

希望转换数据类型

Bool

Int

float

String

Array

Object

unset

通常使用自动类型转换就可以适用于大多数的业务逻辑:

类型转换比较容易出问题地方:

将其他数据类型向布尔型转换:

空和0被转换成假false,其余的被转换成true。

资源和对象始终为true。

具体的转换大家参见表格:

了解以下与数据类型相关的函数:

Var_dump();输出数据与类型

Is_type系列函数,判断一个数据是否属于某种类型:

Is_numeric();检测是否是一个数值

Is_scalar()检测一个数据是否是标量数据类型

Isset()检测一个变量是否定义:

注意,isset在判断一个值为unll的数据的时候,返回为false。

而且,在使用isset判断时,如果一个变量没有定义,也不会报告notice的错误。

Empty()判断一个数据是否为空:empty的返回值相当于转换成bool型数据的取反操作。意味着如果一个数据在转换的时候,结果为true,那么用empty判断就为false.

Empty 和isset 会有什么区别?

与isset一样,如果使用empty判断到一个没有定义的变量,那么结果为true。也不会报告一个notice级别的错误。

测试以下:

运算符:

PHP了流程控制

Php代码的执行顺序

通过程序提供的语言结构,来控制程序代码的执行顺序,叫做流程控制。

典型的三种流程:

顺序结构:

分支结构(选择结构):

循环结构:

有时,在编写代码之前,先要设计好我们的程序。通常会采用流程图的形式来设计和描述我们的流程。

流程图:以图例的形式表示业务(代码)执行流程。

流程图使用的常用图例:

1,表示开始和结束:

2,表示某个进程(任务)

3,表示条件判断:

4,表示流程方向

5表示数据的输入:

顺序结构:

分支结构:

If系列

1,只有在条件满足时,才会执行的某段代码

2,带有else条件的分支:

3,带有elseif 的分支,多分支

4,,带有else if 的:

上面的语法的原因是:

A, if语句可以相互嵌套。满足条件时所执行的进程语句内还可以包含if语句

B,如果条件成立时所执行的语句段,只有一条语句的话,可以省略进程语句端的大括号。因此上面的语法else if 的语法

其实是,当else的成立时,else所执行的语句只有一个就是一个潜逃的if语句。

下面就是进化的过程:

但是在使用上,结果是一致的。

当我们使用流程控制语句的替代语法时。

替代的进程语句块的大括号。

查看elseif 和else if 的区别:

Switch系列

测试是否可以使用中文作为变量名?

$name = ‘xxx’;

$姓名= “李小龙’;

Echo $姓名;

2如果我想使用当引号定义

a\’b字符串时怎么定义。

3 利用循环结构输出所有的ascii码可见字符:

32-126 十进制tiP:chr()函数

4,数组的下标:

是否可以使用布尔型做下标,如果使用了布尔型会如何处理?

是否可以使用负整数做下标,如果使用了那么接下来的下标如何处理?

$arr1[-3] = ‘a’;

$arr1[] = ‘b’

是否可以使用空字符串作为下标,

下面的下标有什么区别:

是否可以使用NULL作为数组键:

5,试着将一个字符串内的所有字符全部输出

For循环。

Strlen()函数可以获得字符串的长度

6,完成计算器的作业

做一个表单,用于展示计算器页面

还需要一个脚本用于处理提交的数据。在脚本内,最基本的应该根据用户所选择的运算符,计算出结果(多分支if elseif).将计算的结果显示出来。最好增加上一些完整性的判断,运算数不能为空,必须是数值)

相关主题
相关文档
最新文档