您的位置 首页 php

PHP基础学习2.变量类型

本节我们探讨PHP的变量类型,这也是值得深入研究的一部分基础知识。

众所周知,PHP的变量类型共有8种,那么如何理解以及记忆这八种呢?

在传统意义的C语言编程中,我们都知道,重点的几种类型,老师说,这个世界有很多是否真假的东西非0即1,这也是计算机最底层的表示方法,这就是 布尔型 ,数学上用到参与计算的我们有 整型 浮点型 ,这是一些数学逻辑必不可少的类型,而实际业务中我们要接纳一些 非数值型 的类型,就像无规则的那些东西,是需要 字符串 的。大量的变量堆积让编程变量定义频繁而又容易污染,此时如果有集合的概念出现,该多么完美,这就产生了 数组 C语言 中只有索引数组,而如果需要一些键值对应类型例如json格式的数据格式又该如何存储呢?当然是创建 对象 了,可是C语言是没有这样的对象的,于是出现一个概念叫结构体。那么由此我们想到PHP的数据类型可以这样划分

简单类型 数值类型 表示清晰明确单一的东西

布尔型 整型 浮点型 字符串

复合类型 标识集合,列表,元素的统一等

数组 对象

还有一个很特殊叫 null 这是空的概念,这个概念请仔细的查资料对比 空与0 与“”的区别

对于特殊场景业务如文件流, 句柄 ,资源等PHP提供了另外的一种类型叫 resource类型 我习惯称之为句柄,有人也叫它资源型。

这里完整列出所有类型

bool int float(double) string array object null resource

接下来,我们将对各个类型做一些详细探讨。

1.bool型

布尔型是经常用于生活逻辑和实际业务逻辑中的一种类型,其存在之广,无所不及。

万物存是非,因果有矛盾。这是我对bool类型的理解,(bool也是一个QQ群网友的昵称)

布尔型通常用于 if判断分支以及三目运算符中,作为实现比对 比较 判断等功能而出现

比如这样一段代码:

bool类型运用于if判断

如何判断一个变量是bool类型的变量呢?我们可以采用is_bool 举例如下

用 is_bool来判断该变量是不是bool型变量

如果想把一个变量转为bool型,又该如何做呢?

很简单,我们可以用(bool)来进行转换

用(bool)将变量转为bool类型

还有没有其他方式?

当然有了!

这样也是可以的,还有没有呢?

必须有啊!

使用settype进行强制转换

这回总没有了把?

还有!!惊不惊喜,意不意外?

两次取反得到bool类型

2.int型

int型很常用,也用于判断比较或者取最大最小值等等场景,比如

获取等级后做比对处理

同样对于int型的判断可以用 is_int 转换可以用 (int) intval() 或者是+0转数值型

代码如下

集中方法将字符串转为整型

3. float

浮点型和整型没有太多区别,通常用于精度计算中或者价格等有小数的逻辑中 例如某某商品打折计算,最后算出来的一般都是带小数点的,于是这个时候float类型就出现了它的用武之地。

如图:

从原价和折扣计算最终价格

很显然,关于float的转换,也是很简单的。

类似于int 举例如图

float类型的转换和判断

4.string型

字符串型是最广泛运用的一种类型,甚至以上三种类型都可以用字符串类型存储

请密切关注字符串型的使用范围,判断标准,以及应用场景。

字符串中的变量解析和字符串的拼接

关于string类型的判断和转换如下:

string类型的判断和转换

令人称奇的是,只要拼接字符串,就能把类型转为字符串了。当然这不包含复杂的数据类型,array object是不可以这么做的,对于array object 我们一般采用 json_encode进行编码 或者 serialize进行序列化,如果需要转回来可以采用 json_decode unserialize等方法。

5.array型

数组类型是php最为强大的数据类型,包含数值索引数组和键值对关联数组,融合了C语言的纯数组概念和js中JSON对象的概念在里面,而且两者还可以同时共存,举例如下

数组的声明中可以声明索引数组和关联数组并存

数组的转换也简单 使用 (array)即可。

而且数组可以剔除元素,可以追加元素,可以插入元素,可以弹出元素

关于数组的一些列提出追加弹出塞入等操作

数组底层本身就是用双向 链表 实现,所以提高了查找速度,遍历速度,这是非常难能可贵的,这就是为什么php的array在项目开发中广泛运用的原因,下面简单实现一个链表,希望读者能明白array有多么强大。

php函数模拟实现链表

6.object型

object类型通常广泛用于具有MVC模式的框架设计中,多与面向对象结合使用,很多工具对象、数据库对象、中间件对象广泛采用object类型,存储成员变量并进行取值赋值的使用,实现变量的临时存储。而基本的对象类型却很少使用,在json对象的传输中会有一部分使用,这里讲解如何实例化一个对象

你可以将数组(object)$array 这样使用得到对象,也可以通过如下方式进行声明对象

通过实例化 Stdclass得到对象

你可以对声明的对象进行赋值,取值

对象的取值与赋值

值得注意的是,你取值赋值的都是public属性的成员变量,因为 private protected的属性你操作不了的。

7.null型

这是一个非常奇怪的类型,它与世无争,却又无孔不入,这是一个寂寞如浪子的侠客,却又是一个破坏力非凡的高手。他就像行走江湖多年威名远播如雷贯耳却又神龙见首不见尾的侠士一样,暗中观察这代码编程中的风云变幻,笑看沧海桑田!(不能再说了,都快改武侠小说了……)

null 类型不同于 0 “” “ ”等类型,它就是null,是真正意义上的空,也可以说是未定义,当然这里和js的未定义还是不一样的。变量初始化没有赋值,则是null,变量没有被初始化即被拿来使用 ,也是null(这个时候可能会有一个警告notice出现)。变量被回收后,变量消失,也可以成为null。总之,它就是天地之始源,万物之归宿!

变量与null的关系

null与0 “0” “” “ ”的对比关系

8.resource型

资源型是一个很复杂的类型,它拥有多种形态,这里以文件句柄和mysql链接的资源句柄作为例子讲解

有时候需要监听一个端口,打开一个流操作,或者打开一个管道,都会用到资源型

打开文件夹读取列表

连接数据库端口

这八种类型犹如 八仙过海 ,各显神通,支撑起php在各种环境下需要处理和解决的业务逻辑,每种类型都有它的优势和缺点,优劣互补,共同进步,这也是我们在团队开发合作中需要学会的人生哲理。结尾就以玲珑塔部分选段作为收场吧!

大徒弟名叫青头愣

二徒弟名叫愣头青

三徒弟名叫僧三点

四徒弟名叫点三僧

五徒弟名叫蹦葫芦把儿

六徒弟名叫把儿葫芦蹦

七徒弟名叫随风倒

八徒弟名叫倒随风

八个徒弟八宗艺

八仙过海显其能

青头愣会打磬

愣头青会撞钟

僧三点会吹管

点三僧会捧笙

蹦葫芦把儿会打鼓

把儿葫芦蹦会念经

随风倒他会扫地

倒随风他会点灯

老师傅叫他们换一换

要想换过来不可能

愣头青打了青头愣的磬

青头愣撞不了愣头青的钟

点三僧吹不了这僧三点的管

这个僧三点捧不了点三僧的笙

把儿葫芦蹦打不了

蹦葫芦把儿的鼓

蹦葫芦把儿他念不了

把儿葫芦蹦的经

倒随风他扫不了

这随风倒的地

哪个随风倒他点不了

这倒随风的灯!

文章来源:智云一二三科技

文章标题:PHP基础学习2.变量类型

文章地址:https://www.zhihuclub.com/149432.shtml

关于作者: 智云科技

热门文章

网站地图