首先,我们一般说php变量类型8种
标量类型:布尔boolean,整形integer,浮点float,字符string
复杂类型:数组array,对象object
特殊类型:资源resource,空null
php底层所有变量都是以结构体zval来实现
其中refcount__gc和is_ref__gc表示变量是否是一个引用。type字段标识变量的类型,type的值可以是:
IS_NULL,IS_BOOL,IS_LONG,IS_FLOAT,IS_STRING,IS_ARRAY,IS_OBJECT,IS_RESOURCE。
PHP根据type的类型,来选择如何存储到zvalue_value。
C语言中,用"\0"作为字符串结束符。也就是说一个字符串"Hello\0World"在C语言中,用printf来输出的话,只能输出hello,因为"\0"会认为字符已经结束。PHP中是通过结构体的_zval_value.str.len来控制字符串长度,相关函数不会遇到"\0"结束。所以PHP的字符串是二进制安全的。
变量的符号表与zval的值的映射是通过HashTable实现的。
例如:$val = 'helloworld'; $val的变量名存储在变量符号表中,代表$val的类型和值的zval结构存储在哈希表中,内
核通过变量的符号表与zval地址的哈希映射,来实现PHP变量的存取。
更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。
程序员编程交流QQ群:805358732
如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!