加入收藏 | 设为首页 | 会员中心 | 我要投稿 草根网_南昌站长网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

【PHP7内核剖析】——数据类型

发布时间:2022-09-14 12:43:42 所属栏目:PHP 来源:
导读:  前言:本来这一章是不想写的,引文关于数据类型这章内容,大多讲的都是一些PHP内部的处理,对于我们平时开发PHP用处不是特别大,我们也可以不用去确切的了解。然而今天的项目进度做完了,看看还有写时间,想着也
  前言:本来这一章是不想写的,引文关于数据类型这章内容,大多讲的都是一些PHP内部的处理,对于我们平时开发PHP用处不是特别大,我们也可以不用去确切的了解。然而今天的项目进度做完了,看看还有写时间,想着也别浪费么,那就简单写一些,就当是练习一下自己写文章的能力了吧!
 
  正文开始:
 
  数据类型这个东西吧,但凡是高级语言,肯定是离不开的,这样一来,这个东西其实就是编程的最基础的东西了,其实你如果懂了一们语言的数据类型后,其他的语言大同小异。
 
  首先说一下PHP中的变量类型吧!这个东西我隐约记得我再一次的面试中有面试管问过我,那我就重点说一下
 
  PHP的变量类型主要分为三类:标量类型,复合类型,特殊类型。
 
  标量类型有:字符串(string),整形(int),浮点型(double),布尔型(bool)
 
  复合类型有:数组(array),对象(object)
 
  特殊类型有:资源(resource),NULL
 
  嗯,到这里基本就可以了,下面主要说了一下数据类型的内部实现。有兴趣可以看哈,没兴趣可以跳过了。
 
  然后我们再来看一下PHP对于数据类型的内部实现吧
 
  重点说两个概念:zval,zend_value
 
  先看zval的源码:
 
  zend_value是用来保存具体的变量值,u1里面就一个v结构体与一个32为无符号的type_info,type_info的值是一个4字节的整型,每一个字节对应了v结构体中的一个变量。v结构体中的type是用来标识value的类型,type_flags是变量的内存管理。u2的话其实是用来凑数的,占了4个字节,里面存放的是一些特殊场景用的东西。先说一下为啥我刚刚说u2是用来凑数的,首先,在这个struct结构体中,value是占了8字节php内核,u1是占了4字节,但是他们两个加起来并不是12字节的(内部怎么回事暂时不清楚,后面有机会再研究一下),然后因为系统内部会进行字节对齐,所以这个结构体会占用16字节,那放着4字节不用的话,就浪费了,所以就有了u2这个占4字节的联合体。
 

(编辑:草根网_南昌站长网 )

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章