Как в PHP вычисляется count()?

Как в PHP вычисляется count()? Каждый раз перебираются и считаются все элементы массива или в объекте типа array есть переменная, в которой хранится размер?
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 3
FanatPHP
@FanatPHP
Чебуратор тега РНР
второе
потому что там дураков нет, каждый раз пересчитывать одно и то же.
Ответ написан
Комментировать
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
Массив в PHP внутри — хэш-таблица (точнее чуть-сложнее), в ней есть необходимые данные для оптимизаций (отдельно ключи хранятся, отдельно значения и мета-информация, в которой есть все необходимые данные)
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Все же написано
https://www.php.net/manual/ru/function.count.php

If you want to run through large arrays don't use count() function in the loops , its a over head in performance,  copy the count() value into a variable and use that value in loops for a better performance.

Eg:

// Bad approach

for($i=0;$i<count($some_arr);$i++)
{
    // calculations
}

// Good approach

$arr_length = count($some_arr);
for($i=0;$i<$arr_length;$i++)
{
    // calculations
}


Пример #4 Объект, реализующий интерфейс Countable
Вот тут вы можете извернуться и как то закешировать значение
<?php
class CountOfMethods implements Countable
{
    private function someMethod()
    {
    }

    public function count(): int
    {
        return count(get_class_methods($this));
    }
}

$obj = new CountOfMethods();
var_dump(count($obj));
?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽