php的两种复合数据类型是什么意思_【PHP7内核剖析】——数据类型

55fb770e1015553952f7c04c1094c532.png

前言:本来这一章是不想写的,引文关于数据类型这章内容,大多讲的都是一些PHP内部的处理,对于我们平时开发PHP用处不是特别大,我们也可以不用去确切的了解。然而今天的项目进度做完了,看看还有写时间,想着也别浪费么,那就简单写一些,就当是练习一下自己写文章的能力了吧!


正文开始:

数据类型这个东西吧,但凡是高级语言,肯定是离不开的,这样一来,这个东西其实就是编程的最基础的东西了,其实你如果懂了一们语言的数据类型后,其他的语言大同小异。

首先说一下PHP中的变量类型吧!这个东西我隐约记得我再一次的面试中有面试管问过我,那我就重点说一下

PHP的变量类型主要分为三类:标量类型,复合类型,特殊类型。

标量类型有:字符串(string),整形(int),浮点型(double),布尔型(bool)

复合类型有:数组(array),对象(object)

特殊类型有:资源(resource),NULL

嗯,到这里基本就可以了,下面主要说了一下数据类型的内部实现。有兴趣可以看哈,没兴趣可以跳过了。

然后我们再来看一下PHP对于数据类型的内部实现吧

重点说两个概念:zval,zend_value

先看zval的源码:

7b027614c555c775a7934f07bb536c66.png

zend_value是用来保存具体的变量值,u1里面就一个v结构体与一个32为无符号的type_info,type_info的值是一个4字节的整型,每一个字节对应了v结构体中的一个变量。v结构体中的type是用来标识value的类型,type_flags是变量的内存管理。u2的话其实是用来凑数的,占了4个字节,里面存放的是一些特殊场景用的东西。先说一下为啥我刚刚说u2是用来凑数的,首先,在这个struct结构体中,value是占了8字节,u1是占了4字节,但是他们两个加起来并不是12字节的(内部怎么回事暂时不清楚,后面有机会再研究一下),然后因为系统内部会进行字节对齐,所以这个结构体会占用16字节,那放着4字节不用的话,就浪费了,所以就有了u2这个占4字节的联合体。

再就是zend_value这个东西了,先上源码:

667c0fab476965b8572a13445eb72a73.png

这个东西我也就是对着书了解了一下,深究的话,我觉得暂时用处不大,那就知道这么个东西就行了-_-

今天就差不多写这些吧,后面的主要是一些转换的东西,都是设计内部运行的实现,现在看也没多大意思,就溜了溜了 哈哈哈

————————————————

关注微信公众号:PHP视界 ,我们一起交流成长~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值