zend_array 和 HashTable 都是 _zend_array 结构体的别名。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 185 struct _zend_array { 186 zend_refcounted_h gc; 187 union { 188 struct { 189 ZEND_ENDIAN_LOHI_4( 190 zend_uchar flags, 191 zend_uchar nApplyCount, 192 zend_uchar nIteratorsCount, 193 zend_uchar consistency) 194 } v; 195 uint32_t flags; 196 } u; 197 uint32_t nTableMask; 198 Bucket *arData; 199 uint32_t nNumUsed; 200 uint32_t nNumOfElements; 201 uint32_t nTableSize; 202 uint32_t nInternalPointer; 203 zend_long nNextFreeElement; 204 dtor_func_t pDestructor; 205 };
|
1 2 3 4 5
| typedef struct _Bucket { zval val; zend_ulong h; zend_string *key; } Bucket;
|
数组初始化:
数组添加数据:
数组删除数据:
数组获取数据: