#define ZEND_HASH_FOREACH_STR_KEY(ht, _key) \
ZEND_HASH_FOREACH(ht, 0); \
_key = _p->key;
-
-#define ZEND_HASH_FOREACH_KEY_IND(ht, _h, _key) \
- ZEND_HASH_FOREACH(ht, 1); \
- _h = _p->h; \
- _key = _p->key;
#define ZEND_HASH_FOREACH_KEY(ht, _h, _key) \
ZEND_HASH_FOREACH(ht, 0); \
_key = _p->key; \
_val = _z;
-#define ZEND_HASH_FOREACH_CURRENT_KEY(ht, _h, _key) \
- _h = _p->h; \
- _key = _p->key;
-
-#define ZEND_HASH_FOREACH_CURRENT_STR_KEY(ht, _key) \
- _key = _p->key;
-
-#define ZEND_HASH_FOREACH_CURRENT_NUM_KEY(ht, _h) \
- _h = _p->h;
-
-#define ZEND_HASH_FOREACH_CURRENT_VAL(ht, _val) \
- _val = _z;
-
#define ZEND_HASH_APPLY_PROTECTION(ht) \
((ht)->u.flags & HASH_FLAG_APPLY_PROTECTION)
if (strict) {
zval res; /* comparison result */
- ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(array), entry) {
+ ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) {
ZVAL_DEREF(entry);
fast_is_identical_function(&res, value, entry);
if (Z_TYPE(res) == IS_TRUE) {
- ZEND_HASH_FOREACH_CURRENT_KEY(Z_ARRVAL_P(array), num_idx, str_idx);
if (behavior == 0) {
RETURN_TRUE;
} else {
}
} ZEND_HASH_FOREACH_END();
} else {
- ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(array), entry) {
+ ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) {
if (fast_equal_check_function(value, entry)) {
- ZEND_HASH_FOREACH_CURRENT_KEY(Z_ARRVAL_P(array), num_idx, str_idx);
if (behavior == 0) {
RETURN_TRUE;
} else {
{
zval *input, /* Input array */
*search_value = NULL, /* Value to search for */
+ *entry, /* An entry in the input array */
+ res, /* Result of comparison */
new_val; /* New value */
zend_bool strict = 0; /* do strict comparison */
zend_ulong num_idx;
/* Initialize return array */
if (search_value != NULL) {
- zval *entry; /* An entry in the input array */
- zval res; /* Result of comparison */
array_init(return_value);
if (strict) {
- ZEND_HASH_FOREACH_VAL_IND(Z_ARRVAL_P(input), entry) {
+ ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(input), num_idx, str_idx, entry) {
fast_is_identical_function(&res, search_value, entry);
if (Z_TYPE(res) == IS_TRUE) {
- ZEND_HASH_FOREACH_CURRENT_KEY(Z_ARRVAL_P(input), num_idx, str_idx);
if (str_idx) {
ZVAL_STR_COPY(&new_val, str_idx);
} else {
}
} ZEND_HASH_FOREACH_END();
} else {
- ZEND_HASH_FOREACH_VAL_IND(Z_ARRVAL_P(input), entry) {
+ ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(input), num_idx, str_idx, entry) {
if (fast_equal_check_function(search_value, entry)) {
- ZEND_HASH_FOREACH_CURRENT_KEY(Z_ARRVAL_P(input), num_idx, str_idx);
if (str_idx) {
ZVAL_STR_COPY(&new_val, str_idx);
} else {
array_init_size(return_value, zend_hash_num_elements(Z_ARRVAL_P(input)));
/* Go through input array and add keys to the return array */
- ZEND_HASH_FOREACH_KEY_IND(Z_ARRVAL_P(input), num_idx, str_idx) {
+ ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(input), num_idx, str_idx, entry) {
if (str_idx) {
ZVAL_STR_COPY(&new_val, str_idx);
} else {
return 0;
}
}
-/* }}} */
/* {{{ proto array array_column(array input, mixed column_key[, mixed index_key])
Return the values from a single column in the input array, identified by the
/* copy all elements of first array that are not in exclude set */
array_init_size(return_value, zend_hash_num_elements(Z_ARRVAL(args[0])));
- ZEND_HASH_FOREACH_VAL_IND(Z_ARRVAL(args[0]), value) {
+ ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL(args[0]), idx, key, value) {
str = zval_get_string(value);
if (!zend_hash_exists(&exclude, str)) {
- ZEND_HASH_FOREACH_CURRENT_KEY(Z_ARRVAL(args[0]), idx, key);
if (key) {
zval_add_ref(value);
zend_hash_add_new(Z_ARRVAL_P(return_value), key, value);