Browse Source

Added array_reverse() function.

experimetnal/RETURN_REF_PATCH
Andrei Zmievski 27 years ago
parent
commit
23e8d1762d
  1. 1
      ChangeLog
  2. 44
      ext/standard/basic_functions.c
  3. 1
      ext/standard/basic_functions.h

1
ChangeLog

@ -2,6 +2,7 @@ PHP 4.0 CHANGE LOG ChangeLog
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ?? 1999, Version 4.0 Beta 3
- Added array_reverse() function (Andrei)
- Some more XML fixes/cleanups (Thies)
- Updated preg_replace() so that if any argument passed in is an array
it will make a copy of each entry before converting it to string so that

44
ext/standard/basic_functions.c

@ -327,6 +327,7 @@ function_entry basic_functions[] = {
PHP_FE(array_keys, NULL)
PHP_FE(array_values, NULL)
PHP_FE(array_count_values, NULL)
PHP_FE(array_reverse, NULL)
PHP_FE(connection_aborted, NULL)
PHP_FE(connection_timeout, NULL)
@ -3103,6 +3104,49 @@ PHP_FUNCTION(array_count_values)
}
/* }}} */
/* {{{ proto array array_reverse(array input)
Return input as a new array with the order of the entries reversed */
PHP_FUNCTION(array_reverse)
{
zval **input, /* Input array */
**entry; /* An entry in the input array */
char *string_key;
ulong num_key;
/* Get arguments and do error-checking */
if (ARG_COUNT(ht) != 1 || getParametersEx(1, &input) == FAILURE) {
WRONG_PARAM_COUNT;
}
if ((*input)->type != IS_ARRAY) {
zend_error(E_WARNING, "Argument to array_reverse() should be an array");
return;
}
/* Initialize return array */
array_init(return_value);
zend_hash_internal_pointer_end((*input)->value.ht);
while(zend_hash_get_current_data((*input)->value.ht, (void **)&entry) == SUCCESS) {
(*entry)->refcount++;
switch (zend_hash_get_current_key((*input)->value.ht, &string_key, &num_key)) {
case HASH_KEY_IS_STRING:
zend_hash_update(return_value->value.ht, string_key, strlen(string_key)+1,
entry, sizeof(zval *), NULL);
efree(string_key);
break;
case HASH_KEY_IS_LONG:
zend_hash_next_index_insert(return_value->value.ht,
entry, sizeof(zval *), NULL);
break;
}
zend_hash_move_backwards((*input)->value.ht);
}
}
/* }}} */
/*
* Local variables:

1
ext/standard/basic_functions.h

@ -132,6 +132,7 @@ PHP_FUNCTION(array_merge);
PHP_FUNCTION(array_keys);
PHP_FUNCTION(array_values);
PHP_FUNCTION(array_count_values);
PHP_FUNCTION(array_reverse);
#if HAVE_PUTENV
typedef struct {

Loading…
Cancel
Save