page contents

如何理解PHP是弱类型语言?

首先,我们一般说php变量类型8种 标量类型:布尔boolean,整形integer,浮点float,字符string 复杂类型:数组array,对象object 特殊类型:资源resource,空null php底层所有变量都是以...

attachments-2021-06-Wz8Q06v760d69859538d0.png

首先,我们一般说php变量类型8种

标量类型:布尔boolean,整形integer,浮点float,字符string

复杂类型:数组array,对象object

特殊类型:资源resource,空null

php底层所有变量都是以结构体zval来实现

attachments-2021-06-S6fKL89j60d699119d848.png

其中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技术交流群一起交流学习哦。

attachments-2022-06-tavMQceY62ad28802dffe.jpeg

  • 发表于 2021-06-26 11:02
  • 阅读 ( 463 )
  • 分类:PHP开发

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章