From 8638a61df9af21afc1413ecfc5e5db22ed978cc1 Mon Sep 17 00:00:00 2001 From: "Thies C. Arntzen" Date: Tue, 21 Sep 1999 14:36:41 +0000 Subject: [PATCH] added krsort() function --- ChangeLog | 1 + ext/standard/basic_functions.c | 28 ++++++++++++++++++++++++++++ ext/standard/basic_functions.h | 1 + 3 files changed, 30 insertions(+) diff --git a/ChangeLog b/ChangeLog index 4d9a05af02..ed471ef9f7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ PHP 4.0 CHANGE LOG ChangeLog ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ?? 1999, Version 4.0 Beta 3 +- Added krsort() function (Thies) - Added func_num_args(), func_get_arg() and func_get_args() for standard access to variable number of arguments functions (Zeev) - Added FTP support (Andrew Skalski) diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index dca8f7762f..8eb9d4be9f 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -82,6 +82,7 @@ function_entry basic_functions[] = { PHP_FE(usleep, NULL) PHP_FE(ksort, first_arg_force_ref) + PHP_FE(krsort, first_arg_force_ref) PHP_FE(asort, first_arg_force_ref) PHP_FE(arsort, first_arg_force_ref) PHP_FE(sort, first_arg_force_ref) @@ -620,6 +621,10 @@ PHP_FUNCTION(strval) pval_copy_constructor(return_value); } +static int array_reverse_key_compare(const void *a, const void *b) +{ return array_key_compare(a,b)*-1; +} + static int array_key_compare(const void *a, const void *b) { Bucket *first; @@ -645,6 +650,29 @@ static int array_key_compare(const void *a, const void *b) } +PHP_FUNCTION(krsort) +{ + pval *array; + HashTable *target_hash; + + if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &array) == FAILURE) { + WRONG_PARAM_COUNT; + } + target_hash = HASH_OF(array); + if (!target_hash) { + php_error(E_WARNING, "Wrong datatype in krsort() call"); + return; + } + if (!ParameterPassedByReference(ht,1)) { + php_error(E_WARNING, "Array not passed by reference in call to krsort()"); + return; + } + if (zend_hash_sort(target_hash, array_reverse_key_compare,0) == FAILURE) { + return; + } + RETURN_TRUE; +} + PHP_FUNCTION(ksort) { pval *array; diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h index 10cd02f348..d704f0506e 100644 --- a/ext/standard/basic_functions.h +++ b/ext/standard/basic_functions.h @@ -51,6 +51,7 @@ PHP_FUNCTION(toggle_short_open_tag); PHP_FUNCTION(sleep); PHP_FUNCTION(usleep); PHP_FUNCTION(ksort); +PHP_FUNCTION(krsort); PHP_FUNCTION(asort); PHP_FUNCTION(arsort); PHP_FUNCTION(sort); -- 2.50.0