mirror of
https://github.com/php/php-src.git
synced 2025-08-20 09:24:05 +02:00
Count() was missing
This commit is contained in:
parent
1e264fc509
commit
69e792ee7b
1 changed files with 21 additions and 0 deletions
|
@ -47,6 +47,7 @@ SPL_METHOD(Array, offsetUnset);
|
||||||
SPL_METHOD(Array, append);
|
SPL_METHOD(Array, append);
|
||||||
SPL_METHOD(Array, getArrayCopy);
|
SPL_METHOD(Array, getArrayCopy);
|
||||||
SPL_METHOD(Array, seek);
|
SPL_METHOD(Array, seek);
|
||||||
|
SPL_METHOD(Array, count);
|
||||||
|
|
||||||
static
|
static
|
||||||
ZEND_BEGIN_ARG_INFO(arginfo_array___construct, 0)
|
ZEND_BEGIN_ARG_INFO(arginfo_array___construct, 0)
|
||||||
|
@ -83,6 +84,7 @@ static zend_function_entry spl_funcs_ArrayObject[] = {
|
||||||
SPL_ME(Array, offsetUnset, arginfo_array_offsetGet, ZEND_ACC_PUBLIC)
|
SPL_ME(Array, offsetUnset, arginfo_array_offsetGet, ZEND_ACC_PUBLIC)
|
||||||
SPL_ME(Array, append, arginfo_array_append, ZEND_ACC_PUBLIC)
|
SPL_ME(Array, append, arginfo_array_append, ZEND_ACC_PUBLIC)
|
||||||
SPL_ME(Array, getArrayCopy, NULL, ZEND_ACC_PUBLIC)
|
SPL_ME(Array, getArrayCopy, NULL, ZEND_ACC_PUBLIC)
|
||||||
|
SPL_ME(Array, count, NULL, ZEND_ACC_PUBLIC)
|
||||||
{NULL, NULL, NULL}
|
{NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -100,6 +102,7 @@ static zend_function_entry spl_funcs_ArrayIterator[] = {
|
||||||
SPL_ME(Array, append, arginfo_array_append, ZEND_ACC_PUBLIC)
|
SPL_ME(Array, append, arginfo_array_append, ZEND_ACC_PUBLIC)
|
||||||
SPL_ME(Array, getArrayCopy, NULL, ZEND_ACC_PUBLIC)
|
SPL_ME(Array, getArrayCopy, NULL, ZEND_ACC_PUBLIC)
|
||||||
SPL_ME(Array, seek, arginfo_array_seek, ZEND_ACC_PUBLIC)
|
SPL_ME(Array, seek, arginfo_array_seek, ZEND_ACC_PUBLIC)
|
||||||
|
SPL_ME(Array, count, NULL, ZEND_ACC_PUBLIC)
|
||||||
{NULL, NULL, NULL}
|
{NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -716,6 +719,24 @@ SPL_METHOD(Array, seek)
|
||||||
while (position-- > 0 && spl_array_next(intern TSRMLS_CC));
|
while (position-- > 0 && spl_array_next(intern TSRMLS_CC));
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
|
/* {{{ proto bool ArrayObject::count()
|
||||||
|
Return the number of elements in the Iterator. */
|
||||||
|
SPL_METHOD(Array, count)
|
||||||
|
{
|
||||||
|
long position;
|
||||||
|
zval *object = getThis();
|
||||||
|
spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC);
|
||||||
|
HashTable *aht = HASH_OF(intern->array);
|
||||||
|
HashPosition pos;
|
||||||
|
|
||||||
|
if (!aht) {
|
||||||
|
php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Array was modified outside object and is no longer an array");
|
||||||
|
RETURN_LONG(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
RETURN_LONG(zend_hash_num_elements(aht));
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
/* {{{ proto mixed|NULL ArrayIterator::current()
|
/* {{{ proto mixed|NULL ArrayIterator::current()
|
||||||
Return current array entry */
|
Return current array entry */
|
||||||
SPL_METHOD(Array, current)
|
SPL_METHOD(Array, current)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue