From dddbfccb9fa49d77d5dc556abdf667a016c73065 Mon Sep 17 00:00:00 2001 From: Andrei Zmievski Date: Fri, 12 Dec 2008 19:20:49 +0000 Subject: [PATCH] MFH --- ext/standard/array.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ext/standard/array.c b/ext/standard/array.c index 7c3049e1f4..70966edd88 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -2668,7 +2668,7 @@ PHP_FUNCTION(array_change_key_case) } /* }}} */ -/* {{{ proto array array_unique(array input) +/* {{{ proto array array_unique(array input [, int sort_flags]) Removes duplicate values from array */ PHP_FUNCTION(array_unique) { @@ -2680,11 +2680,14 @@ PHP_FUNCTION(array_unique) }; struct bucketindex *arTmp, *cmpdata, *lastkept; unsigned int i; + long sort_type = PHP_SORT_REGULAR; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &array) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|l", &array, &sort_type) == FAILURE) { return; } + php_set_compare_func(sort_type TSRMLS_CC); + array_init_size(return_value, zend_hash_num_elements(Z_ARRVAL_P(array))); zend_hash_copy(Z_ARRVAL_P(return_value), Z_ARRVAL_P(array), (copy_ctor_func_t) zval_add_ref, (void *)&tmp, sizeof(zval*)); @@ -2703,7 +2706,6 @@ PHP_FUNCTION(array_unique) arTmp[i].i = i; } arTmp[i].b = NULL; - php_set_compare_func(PHP_SORT_STRING TSRMLS_CC); zend_qsort((void *) arTmp, i, sizeof(struct bucketindex), php_array_data_compare TSRMLS_CC); /* go through the sorted array and delete duplicates from the copy */ -- 2.50.1