牛骨文教育服务平台(让学习变的简单)
博文笔记

PHP的数组底层实现

创建时间:2015-04-24 投稿人: 浏览次数:181

PHP的数组底层是怎么实现的?

数组本质上是一个哈希表(HashTable,定义在$PHP_SOURCE_ROOT\Zend\zend_hash.h)。具体实现可以查看 $PHP_SOURCE_ROOT\ext\standard\array.c 和 $PHP_SOURCE_ROOT\Zend\ZendAPI.c 。


PHP之所以发现这么迅速,有很大原因是因为数组数据非常好处理,而且它可以存储其他类型的数据
数组的值存储在zvalue_value.ht字段中,ht是一个HashTable的数据
有关于HashTable的知识请移步 >> HASH表和变量
我们来详细说一下数组
PHP里面所有的数据都离不开zval和HashTable,
一个PHP很简单的数组初始化,
在C语言里面实现的却没有那么简单.
经过简单分析,找到数组的初始化的opcode
在Zend/zend_vm_execute.h文件中

1
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。