• 技术文章 >PHP >PHP教程

    PHP中Zval是什么

    小妮浅浅小妮浅浅2021-06-09 11:25:11原创6352

    1、概念

    Zval是zend中另一个非常重要的数据结构,用来标识并实现PHP变量。包含了PHP中的变量值和类型的相关信息。

    2、组成

    type:指定了变量所述的类型(整数、字符串、数组等)

    refcount&is_ref:用来实现引用计数(后面具体介绍)

    value:核心部分,存储了变量的实际数据

    3、实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    struct _zval_struct {

        union {

            zend_long         lval;             /* long value */

            double            dval;             /* double value */

            zend_refcounted  *counted;

            zend_string      *str;

            zend_array       *arr;

            zend_object      *obj;

            zend_resource    *res;

            zend_reference   *ref;

            zend_ast_ref     *ast;

            zval             *zv;

            void             *ptr;

            zend_class_entry *ce;

            zend_function    *func;

            struct {

                uint32_t w1;

                uint32_t w2;

            } ww;

        } value;

        union {

            struct {

                ZEND_ENDIAN_LOHI_4(

                    zend_uchar    type,         /* active type */

                    zend_uchar    type_flags,

                    zend_uchar    const_flags,

                    zend_uchar    reserved)     /* call info for EX(This) */

            } v;

            uint32_t type_info;

        } u1;

        union {

            uint32_t     var_flags;

            uint32_t     next;                 /* hash collision chain */

            uint32_t     cache_slot;           /* literal cache slot */

            uint32_t     lineno;               /* line number (for ast nodes) */

            uint32_t     num_args;             /* arguments number for EX(This) */

            uint32_t     fe_pos;               /* foreach position */

            uint32_t     fe_iter_idx;          /* foreach iterator index */

        } u2;

    };

    以上就是PHP中Zval的介绍,希望对大家有所帮助。更多php学习指路:php教程

    专题推荐:php zval
    上一篇:PHP中hash table有哪些特点 下一篇:php引用计数如何实现垃圾回收

    相关文章推荐

    • php构造方法__construct()是什么• php中Swoole的模块介绍• php命令行中进行断点• php方法断点如何实现• php中Suhosin是什么• php中如何配置Cookie加密• php Mhash算法的加密• php文件Hash如何使用• php增量Hash函数的使用• php中CGI模式的介绍• php FastCGI模式如何理解• php FastCGI模式的优缺点• php有哪些文件包含漏洞• php不能生成图片的解决办法• php正则替换函数的整理• php中n阶乘的实现方法• php rtrim()函数删除字符• PHP有哪些屏蔽错误的方法• php字符串的截取方式• PHP内部函数是什么• PHP中strval()函数如何使用

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网