andrei Fri Jul 14 20:07:57 2006 UTC
Modified files:
/php-src unicode-progress.txt
/php-src/ext/standard array.c
Log:
Make array_change_key_case() -- a candidate for the quite possibly the
most useless function ever -- use params API and mark it with U.
http://cvs.php.net/viewvc.cgi/php-src/unicode-progress.txt?r1=1.20&r2=1.21&diff_format=u
Index: php-src/unicode-progress.txt
diff -u php-src/unicode-progress.txt:1.20 php-src/unicode-progress.txt:1.21
--- php-src/unicode-progress.txt:1.20 Fri Jul 14 18:12:45 2006
+++ php-src/unicode-progress.txt Fri Jul 14 20:07:57 2006
@@ -10,9 +10,6 @@
Need to fix string_compare_function() to compare Unicode strings
directly in code point order
- array_change_key_case()
- Params API, test
-
array_combine()
Handle IS_UNICODE/IS_STRING keys via add_u_assoc_zval()
@@ -86,6 +83,7 @@
array.c
-------
+ array_change_key_case()
array_chunk()
array_fill()
array_flip()
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.358&r2=1.359&diff_format=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.358 php-src/ext/standard/array.c:1.359
--- php-src/ext/standard/array.c:1.358 Fri Jul 14 18:12:45 2006
+++ php-src/ext/standard/array.c Fri Jul 14 20:07:57 2006
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: array.c,v 1.358 2006/07/14 18:12:45 andrei Exp $ */
+/* $Id: array.c,v 1.359 2006/07/14 20:07:57 andrei Exp $ */
#include "php.h"
#include "php_ini.h"
@@ -2866,42 +2866,30 @@
/* }}} */
-/* {{{ proto array array_change_key_case(array input [, int case=CASE_LOWER])
+/* {{{ proto array array_change_key_case(array input [, int case=CASE_LOWER]) U
Retuns an array with all string keys lowercased [or uppercased] */
PHP_FUNCTION(array_change_key_case)
{
- zval **array, **entry, **to_upper;
+ zval *array, **entry;
zstr string_key;
zstr new_key;
uint str_key_len;
int str_len;
ulong num_key;
- ulong change_to_upper=0;
-
+ long change_to_upper=0;
HashPosition pos;
- if (ZEND_NUM_ARGS() < 1 || ZEND_NUM_ARGS() > 2 ||
- zend_get_parameters_ex(ZEND_NUM_ARGS(), &array, &to_upper) ==
FAILURE) {
- WRONG_PARAM_COUNT;
- }
-
- if (ZEND_NUM_ARGS() > 1) {
- convert_to_long_ex(to_upper);
- change_to_upper = Z_LVAL_PP(to_upper);
- }
-
- if (Z_TYPE_PP(array) != IS_ARRAY) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The argument
should be an array");
- RETURN_FALSE;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|l", &array,
&change_to_upper) == FAILURE) {
+ return;
}
array_init(return_value);
- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(array), &pos);
- while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(array), (void
**)&entry, &pos) == SUCCESS) {
- (*entry)->refcount++;
+ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(array), &pos);
+ while (zend_hash_get_current_data_ex(Z_ARRVAL_P(array), (void
**)&entry, &pos) == SUCCESS) {
+ zval_add_ref(entry);
- switch (zend_hash_get_current_key_ex(Z_ARRVAL_PP(array),
&string_key, &str_key_len, &num_key, 0, &pos)) {
+ switch (zend_hash_get_current_key_ex(Z_ARRVAL_P(array),
&string_key, &str_key_len, &num_key, 0, &pos)) {
case HASH_KEY_IS_LONG:
zend_hash_index_update(Z_ARRVAL_P(return_value), num_key, entry, sizeof(entry),
NULL);
break;
@@ -2926,7 +2914,7 @@
break;
}
- zend_hash_move_forward_ex(Z_ARRVAL_PP(array), &pos);
+ zend_hash_move_forward_ex(Z_ARRVAL_P(array), &pos);
}
}
/* }}} */
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php