Вывод данных массива не используя цикл, как?

12
[umka]
На сайте с 25.05.2008
Offline
456
#11
rommer:
не покажете ли, как реализована функция count()?
Что-то берут сомнения.

Смотрите сорцы PHP.

ext/standard/array.c

Zend/zend_hash.c

При добавлении элементов в массив, увеличивается счётчик. А функция count() просто выдаёт его значение.

Лог в помощь!
R
На сайте с 17.11.2011
Offline
22
#12
'[umka:
;9699517']Смотрите сорцы PHP.
ext/standard/array.c
Zend/zend_hash.c

При добавлении элементов в массив, увеличивается счётчик. А функция count() просто выдаёт его значение.

заинтересовали. 😂

case IS_ARRAY:

RETURN_LONG (php_count_recursive (array, mode TSRMLS_CC));

break;

..........

дальше не глядел, но слово recursive вроде говорит о цикле?

https://github.com/php/php-src/blob/master/ext/standard/array.c

домашняя страница - google.com.ua
n0name
На сайте с 22.12.2006
Offline
54
#13
'[umka:
;9699517']При добавлении элементов в массив, увеличивается счётчик. А функция count() просто выдаёт его значение.

Навряд ли. Тогда не было бы такой разницы:


for ($i = 0, $b = count($a); $i < $b; ++$i) { } > 0.21 c
for ($i = 0; $i < count($a); ++$i) { } > 1.14 c
Сервис сравнения цена на VPS (http://vpska.com/)
[umka]
На сайте с 25.05.2008
Offline
456
#14
rommer:
заинтересовали. 😂

case IS_ARRAY:
RETURN_LONG (php_count_recursive (array, mode TSRMLS_CC));
break;
..........

дальше не глядел

Напрасно не глядели.

, но слово recursive вроде говорит о цикле?
https://github.com/php/php-src/blob/master/ext/standard/array.c

В этой функции, если массив не вложенный, выдаётся лишь значение:

cnt = zend_hash_num_elements(Z_ARRVAL_P(array));

https://github.com/php/php-src/blob/master/Zend/zend_hash.c

ZEND_API int zend_hash_num_elements(HashTable *ht)
{
IS_CONSISTENT(ht);

return ht->nNumOfElements;
}

Там же, в различных функциях, видим, как увеличивается или уменьшается этот счётчик.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий