diff options
author | Stanislav Malyshev <stas@php.net> | 2001-03-12 08:07:00 +0000 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2001-03-12 08:07:00 +0000 |
commit | be83ba17da647180c64f1d82706e8ebccbf70d6e (patch) | |
tree | f67cef720ef80f76400ad3cddb628451312e32d1 | |
parent | 40dd7eef96de2a6568a782b9f94d4387bb278d1e (diff) | |
download | php-git-be83ba17da647180c64f1d82706e8ebccbf70d6e.tar.gz |
Use hash position with array_flip
-rw-r--r-- | ext/standard/array.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index c3596c0f6a..3a455def58 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -2173,8 +2173,10 @@ PHP_FUNCTION(array_flip) zval **array, **entry, *data; HashTable *target_hash; char *string_key; + ulong str_key_len; ulong num_key; - + HashPosition pos; + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &array) == FAILURE) { WRONG_PARAM_COUNT; } @@ -2187,13 +2189,13 @@ PHP_FUNCTION(array_flip) array_init(return_value); - zend_hash_internal_pointer_reset(target_hash); - while (zend_hash_get_current_data(target_hash, (void **)&entry) == SUCCESS) { + zend_hash_internal_pointer_reset_ex(target_hash, &pos); + while (zend_hash_get_current_data_ex(target_hash, (void **)&entry, &pos) == SUCCESS) { MAKE_STD_ZVAL(data); - switch (zend_hash_get_current_key(target_hash, &string_key, &num_key, 1)) { + switch (zend_hash_get_current_key_ex(target_hash, &string_key, &str_key_len, &num_key, 1, &pos)) { case HASH_KEY_IS_STRING: Z_STRVAL_P(data) = string_key; - Z_STRLEN_P(data) = strlen(string_key); + Z_STRLEN_P(data) = str_key_len; Z_TYPE_P(data) = IS_STRING; break; case HASH_KEY_IS_LONG: @@ -2211,7 +2213,7 @@ PHP_FUNCTION(array_flip) php_error(E_WARNING, "Can only flip STRING and INTEGER values!"); } - zend_hash_move_forward(target_hash); + zend_hash_move_forward_ex(target_hash, &pos); } } /* }}} */ |