andrei Fri Jul 14 17:55:27 2006 UTC
Modified files:
/php-src unicode-progress.txt
/php-src/ext/standard array.c
Log:
Update array_keys() and array_values() for params API and mark with U.
http://cvs.php.net/viewvc.cgi/php-src/unicode-progress.txt?r1=1.17&r2=1.18&diff_format=u
Index: php-src/unicode-progress.txt
diff -u php-src/unicode-progress.txt:1.17 php-src/unicode-progress.txt:1.18
--- php-src/unicode-progress.txt:1.17 Fri Jul 14 17:35:53 2006
+++ php-src/unicode-progress.txt Fri Jul 14 17:55:27 2006
@@ -37,9 +37,6 @@
array_key_exists()
Params API, test
- array_keys()
- Params API, test
-
array_map()
Params API, FCI cache, test
@@ -70,9 +67,6 @@
array_unique()
Params API, test
- array_values()
- Params API, test
-
array_walk()
Params API, is_callable check, FCI cache, test
@@ -101,11 +95,13 @@
array_chunk()
array_fill()
array_flip()
+ array_keys()
array_merge()
array_merge_recursive()
array_product()
array_push(), array_pop(), array_shift(), array_unshift()
array_sum()
+ array_values()
compact()
count()
min()
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.355&r2=1.356&diff_format=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.355 php-src/ext/standard/array.c:1.356
--- php-src/ext/standard/array.c:1.355 Fri Jul 14 17:35:54 2006
+++ php-src/ext/standard/array.c Fri Jul 14 17:55:27 2006
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: array.c,v 1.355 2006/07/14 17:35:54 andrei Exp $ */
+/* $Id: array.c,v 1.356 2006/07/14 17:55:27 andrei Exp $ */
#include "php.h"
#include "php_ini.h"
@@ -2528,41 +2528,30 @@
/* }}} */
-/* {{{ proto array array_keys(array input [, mixed search_value[, bool
strict]])
+/* {{{ proto array array_keys(array input [, mixed search_value[, bool
strict]]) U
Return just the keys from the input array, optionally only for the
specified search_value */
PHP_FUNCTION(array_keys)
{
- zval **input, /* Input array */
- **search_value, /* Value to search for */
+ zval *input, /* Input array */
+ *search_value = NULL, /* Value to search for */
**entry, /* An entry in the input array */
- res, /* Result of comparison */
- **strict, /* be strict */
+ res, /* Result of comparison */
*new_val; /* New value */
int add_key; /* Flag to indicate whether a key should be
added */
zstr string_key; /* String key */
uint string_key_len;
ulong num_key; /* Numeric key */
+ zend_bool strict = 0; /* do strict comparison */
HashPosition pos;
int (*is_equal_func)(zval *, zval *, zval * TSRMLS_DC) =
is_equal_function;
-
- search_value = NULL;
-
- /* Get arguments and do error-checking */
- if (ZEND_NUM_ARGS() < 1 || ZEND_NUM_ARGS() > 3 ||
- zend_get_parameters_ex(ZEND_NUM_ARGS(), &input, &search_value,
&strict) == FAILURE) {
- WRONG_PARAM_COUNT;
- }
-
- if (Z_TYPE_PP(input) != IS_ARRAY) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The first argument
should be an array");
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|zb", &input,
+ &search_value,
&strict) == FAILURE) {
return;
}
- if (ZEND_NUM_ARGS() == 3) {
- convert_to_boolean_ex(strict);
- if (Z_LVAL_PP(strict)) {
- is_equal_func = is_identical_function;
- }
+
+ if (strict) {
+ is_equal_func = is_identical_function;
}
/* Initialize return array */
@@ -2570,17 +2559,17 @@
add_key = 1;
/* Go through input array and add keys to the return array */
- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(input), &pos);
- while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(input), (void
**)&entry, &pos) == SUCCESS) {
+ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(input), &pos);
+ while (zend_hash_get_current_data_ex(Z_ARRVAL_P(input), (void
**)&entry, &pos) == SUCCESS) {
if (search_value != NULL) {
- is_equal_func(&res, *search_value, *entry TSRMLS_CC);
+ is_equal_func(&res, search_value, *entry TSRMLS_CC);
add_key = zval_is_true(&res);
}
- if (add_key) {
+ if (add_key) {
MAKE_STD_ZVAL(new_val);
- switch
(zend_hash_get_current_key_ex(Z_ARRVAL_PP(input), &string_key, &string_key_len,
&num_key, 1, &pos)) {
+ switch (zend_hash_get_current_key_ex(Z_ARRVAL_P(input),
&string_key, &string_key_len, &num_key, 1, &pos)) {
case HASH_KEY_IS_STRING:
ZVAL_STRINGL(new_val, string_key.s,
string_key_len-1, 0);
goto ukey;
@@ -2600,42 +2589,34 @@
}
}
- zend_hash_move_forward_ex(Z_ARRVAL_PP(input), &pos);
+ zend_hash_move_forward_ex(Z_ARRVAL_P(input), &pos);
}
}
/* }}} */
-/* {{{ proto array array_values(array input)
+/* {{{ proto array array_values(array input) U
Return just the values from the input array */
PHP_FUNCTION(array_values)
{
- zval **input, /* Input array */
- **entry; /* An entry in the input array */
+ zval *input, /* Input array */
+ **entry; /* An entry in the input array
*/
HashPosition pos;
- /* Get arguments and do error-checking */
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(ZEND_NUM_ARGS(),
&input) == FAILURE) {
- WRONG_PARAM_COUNT;
- }
-
- if (Z_TYPE_PP(input) != IS_ARRAY) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The argument
should be an array");
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &input) ==
FAILURE) {
return;
}
-
+
/* Initialize return array */
array_init(return_value);
/* Go through input array and add values to the return array */
- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(input), &pos);
- while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(input), (void
**)&entry, &pos) == SUCCESS) {
-
- (*entry)->refcount++;
- zend_hash_next_index_insert(Z_ARRVAL_P(return_value), entry,
-
sizeof(zval *), NULL);
+ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(input), &pos);
+ while (zend_hash_get_current_data_ex(Z_ARRVAL_P(input), (void
**)&entry, &pos) == SUCCESS) {
+ zval_add_ref(entry);
+ zend_hash_next_index_insert(Z_ARRVAL_P(return_value), entry,
sizeof(zval *), NULL);
- zend_hash_move_forward_ex(Z_ARRVAL_PP(input), &pos);
+ zend_hash_move_forward_ex(Z_ARRVAL_P(input), &pos);
}
}
/* }}} */
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php