zoukankan      html  css  js  c++  java
  • php 变量原理

    1.php作为一种弱类型语言,不需要显式的指明变量的类型,但是php变量也是有类型的,php变量包含以下8种变量(三大类)

      a.标量类型:boolean,integer,float(double),string

      b.复合类型:array,object

      c.特殊类型:resource,null

    2.php使用c语言实现变量的原理

      a.变量存储结构    

    typedef struct _zval_struct zval;
    ...
    struct _zval_struct {
        /* Variable information */
        zvalue_value value;     /*存储变量的值,是一个union类型*/
        zend_uint refcount__gc;/*变量的引用计数,默认为1*/
        zend_uchar type;    /*变量的类型,为IS_NULL、IS_BOOL、IS_LONG、IS_DOUBLE、IS_STRING、IS_ARRAY、IS_OBJECT和IS_RESOURCE之一*/
        zend_uchar is_ref__gc;/*表示是否为引用*/
    };
    

       b.存储变量值得zvalue_value如下

    typedef union _zvalue_value {
        long lval;                  /* long value */
        double dval;                /* double value */
        struct {
            char *val;
            int len;
        } str;
        HashTable *ht;              /* hash table value */
        zend_object_value obj;
    } zvalue_value;
    

     这里使用union而不是struct是为了节省内存空间,以为一个变量同一时间只能表示一种类型

    参考资料:tipi开源项目http://www.php-internals.com/book/?p=chapt03/03-01-00-variables-structure

  • 相关阅读:
    在HTML网页中巧用URL
    技术不是第一位,商业模式是第一位[转帖]
    SQL Server日期计算
    Ms XmlDom 异步装载Xml文件
    陆游词全集
    陈慧娴 3 In 1 MV珍藏集
    下大雪啦
    用Asp+XmlHttp实现RssReader功能
    双绞线的标准接法
    巧把Hotmail邮箱2M轻易扩容到25M
  • 原文地址:https://www.cnblogs.com/hjyang2012/p/5303859.html
Copyright © 2011-2022 走看看