summaryrefslogtreecommitdiff
path: root/ext/standard/array.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2005-10-21 15:19:40 +0000
committerDmitry Stogov <dmitry@php.net>2005-10-21 15:19:40 +0000
commit75a548a7e9af51f2fa6cceac34564ccf50ef9740 (patch)
tree694a5e190e376d5fbdee09b9ab8071aac9731422 /ext/standard/array.c
parentb260064bbf0f1ca015589a59313a867829bad580 (diff)
downloadphp-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.c11
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)) {