啥是弱变量类型?
就是不需要关心数据真正的存储类型,在声明一个PHP变量的时候不需要指明它的变量类型。
那么PHP是怎么做到弱变量类型的呢?
PHP会将变量数据存储到一个结构体中,而结构体中存储数据的结构是一个union结构,union结构中包含了整型、字符串等类型,结构体还有一个变量保存该变量的真正类型。
typedef struct _zval_struct { zvalue_value value; zend_uint refcount; zend_uchar type; zend_uchar is_ref; } zval; typedef union _zvalue_value { long lval; double dval; struct { char *val; int len; } str; HashTable *ht; zend_object_value obj; } zvalue_value;