程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 變量原理,php變量

php 變量原理,php變量

編輯:關於PHP編程

php 變量原理,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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved