近来看了php的c扩展书写,尝试接入数组处理,学会了几个HashTable处理函数记录如下:
zend_hash_next_index_insert 插入数据(数字数组或者关联数组);
zend_hash_add 插入关联数组
zend_hash_index_update 数字数组或者关联数组
zend_hash_update 更新关联数组
代码:
zval *arr, *prefix, *entry,;
zend_string *string_key;
zend_ulong num_key;
int a;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "aa", &arr, &prefix) == FAILURE) {
return;
}
a = zend_hash_num_elements(Z_ARRVAL_P(arr)) + zend_hash_num_elements(Z_ARRVAL_P(prefix));
array_init_size(return_value,a );
ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(arr), num_key, string_key, entry) {
zend_hash_next_index_insert(Z_ARRVAL_P(return_value), entry);
} ZEND_HASH_FOREACH_END();