mirror of
https://github.com/php/php-src.git
synced 2025-08-18 06:58:55 +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, getArrayCopy);
|
||||
SPL_METHOD(Array, seek);
|
||||
SPL_METHOD(Array, count);
|
||||
|
||||
static
|
||||
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, append, arginfo_array_append, ZEND_ACC_PUBLIC)
|
||||
SPL_ME(Array, getArrayCopy, NULL, ZEND_ACC_PUBLIC)
|
||||
SPL_ME(Array, count, NULL, ZEND_ACC_PUBLIC)
|
||||
{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, getArrayCopy, NULL, ZEND_ACC_PUBLIC)
|
||||
SPL_ME(Array, seek, arginfo_array_seek, ZEND_ACC_PUBLIC)
|
||||
SPL_ME(Array, count, NULL, ZEND_ACC_PUBLIC)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
|
@ -716,6 +719,24 @@ SPL_METHOD(Array, seek)
|
|||
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()
|
||||
Return current array entry */
|
||||
SPL_METHOD(Array, current)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue