zval* array ; |
array_init( array ); |
add_assoc_string( array , "key" , "value" , 1); |
zval* array ; |
ALLOC_INIT_ZVAL( array ); |
Z_TYPE_P( array ) = IS_ARRAY ; |
HashTable *h; |
ALLOC_HASHTABLE(h); |
Z_ARRVAL_P( array )=h; |
zend_hash_init(h, 50, NULL,ZVAL_PTR_DTOR, 0); |
zval* barZval; |
MAKE_STD_ZVAL(barZval); |
ZVAL_STRING(barZval, "value" , 0); |
zend_hash_add(h, "key" , 4, &barZval, sizeof(zval*), NULL); |
//add_assoc_*系列函数: |
add_assoc_null(zval *aval, char *key); |
add_assoc_bool(zval *aval, char *key, zend_bool bval); |
add_assoc_long(zval *aval, char *key, long lval); |
add_assoc_double(zval *aval, char *key, double dval); |
add_assoc_string(zval *aval, char *key, char * strval , int dup); |
add_assoc_stringl(zval *aval, char *key,char * strval , uint strlen , int dup); |
add_assoc_zval(zval *aval, char *key, zval *value); |
//备注:其实这些函数都是宏,都是对add_assoc_*_ex函数的封装。 |
//add_index_*系列函数: |
ZEND_API int add_index_long (zval *arg, ulong idx, long n); |
ZEND_API int add_index_null (zval *arg, ulong idx ); |
ZEND_API int add_index_bool (zval *arg, ulong idx, int b ); |
ZEND_API int add_index_resource (zval *arg, ulong idx, int r ); |
ZEND_API int add_index_double (zval *arg, ulong idx, double d); |
ZEND_API int add_index_string (zval *arg, ulong idx, const char *str, int duplicate); |
ZEND_API int add_index_stringl (zval *arg, ulong idx, const char *str, uint length, int duplicate); |
ZEND_API int add_index_zval (zval *arg, ulong index, zval *value); |
//add_next_index_*函数: |
ZEND_API int add_next_index_long (zval *arg, long n ); |
ZEND_API int add_next_index_null (zval *arg ); |
ZEND_API int add_next_index_bool (zval *arg, int b ); |
ZEND_API int add_next_index_resource (zval *arg, int r ); |
ZEND_API int add_next_index_double (zval *arg, double d); |
ZEND_API int add_next_index_string (zval *arg, const char *str, int duplicate); |
ZEND_API int add_next_index_stringl (zval *arg, const char *str, uint length, int duplicate); |
ZEND_API int add_next_index_zval (zval *arg, zval *value); |
PHP中 内核中 |
$arr [] = NULL; add_next_index_null(arr); |
$arr [] = 42; add_next_index_long(arr, 42); |
$arr [] = true; add_next_index_bool(arr, 1); |
$arr [] = 3.14; add_next_index_double(arr, 3.14); |
$arr [] = 'foo' ; add_next_index_string(arr, "foo" ); |
$arr [] = $var ; add_next_index_zval(arr, zval); |