diff options
| author | Dmitry Stogov <dmitry@php.net> | 2005-10-21 15:19:40 +0000 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@php.net> | 2005-10-21 15:19:40 +0000 |
| commit | 75a548a7e9af51f2fa6cceac34564ccf50ef9740 (patch) | |
| tree | 694a5e190e376d5fbdee09b9ab8071aac9731422 /ext/standard/array.c | |
| parent | b260064bbf0f1ca015589a59313a867829bad580 (diff) | |
| download | php-git-75a548a7e9af51f2fa6cceac34564ccf50ef9740.tar.gz | |
Fixed bug #34934 (offsetExists is not called from array_key_exists)
Diffstat (limited to 'ext/standard/array.c')
| -rw-r--r-- | ext/standard/array.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index fd9f2af36f..40372e99b6 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -4390,6 +4390,17 @@ PHP_FUNCTION(array_key_exists) RETURN_FALSE; } + if (Z_TYPE_PP(array) == IS_OBJECT && + Z_OBJ_HT_PP(array)->has_dimension && + (Z_OBJ_HT_PP(array)->has_dimension != std_object_handlers.has_dimension || + instanceof_function_ex(Z_OBJCE_PP(array), zend_ce_arrayaccess, 1 TSRMLS_CC))) { + if (Z_OBJ_HT_PP(array)->has_dimension(*array, *key, 0 TSRMLS_CC)) { + RETURN_TRUE; + } else { + RETURN_FALSE; + } + } + switch (Z_TYPE_PP(key)) { case IS_STRING: if (zend_symtable_exists(HASH_OF(*array), Z_STRVAL_PP(key), Z_STRLEN_PP(key)+1)) { |
