Количество элементов в массиве PHP предлагается определять функцией count(). В большинстве случаев это простой и практичный способ. Обычный сайт не требует особой логики, не содержит сложных систем объектов, поэтому использования функции count() будет достаточно.
В случаях, когда массивы выступают в качестве коллекций объектов или представляют собой семантически взаимосвязанные структуры данных, вычисление количества определяется смыслом этих данных.
Синтаксис и использование функции count()
Результат функции - количество элементов, содержащихся в массиве, которые переданы в качестве параметра. Ниже представлен пример PHP: подсчет количества элементов в массиве.
Первоначально был создан массив из 13 случайных элементов. Каждый элемент - строка символов различного содержания и длины. Затем было удалено два элемента и добавлен один. По логике 13 - 2 + 1 = 12, но функция count() считает иначе. Ниже приведен код вывода этого результата.
Поскольку был добавлен массив, то число элементов должно было увеличиться на количество элементов этого массива. Понятно, что цель функции count() - посчитать количество элементов в массиве. PHP меньше всего интересует, что элементами массива могут быть тоже массивы. Но в прикладном отношении далеко не всегда элементы массива включают в себя разнородные другие массивы.
Особенности структурирования данных
Если речь идет об обработке данных по поставке фруктов в магазин, то элементом может быть ананас и различные сорта яблок или груш. Заводить на все три позиции ассортимента три различных структуры данных нецелесообразно по множеству причин.
Один массив будет всегда лучшим решением, но в нем может быть как строчная строка - «ананас», так и совокупность строк - «сорт яблок» или «сорт груш». Строк может быть множество, все зависит от:
- даты поставки;
- сорта;
- количества;
- цены и др.
Но смысл строки всего массива и строки подмассива всегда будет один. В таком представлении данных количество элементов в массиве PHP не определить по своей логике. Здесь массив должен иметь собственный функционал для определения количества. Функции count() не свойственна рекурсия, и ее использование для определения точного количества элементов - не гарантия точного результата.
Объекты и массивы
Массивы - несомненное качество и эффективность для представления данных. Особенно эффективно использование массивов в качестве коллекций объектов. Классический цикл перебора элементов массива или работа в стиле стека: только с первым элементом или только с последним (после использования элемент удаляется, но становится доступным следующий или предыдущий). Не важно, как работать с коллекцией объектов, но всегда каждому элементу такой коллекции можно назначить собственную функцию определения количества.
Тогда, не используя функцию count(), количество элементов в массиве PHP можно определить через последовательный вызов метода каждого элемента в массиве. Формально такая логика имеет под собой основание: есть ассортимент фруктов, поставляемых в магазин, но как быть, если ассортимент увеличится, и к ананасам, яблокам и грушам добавятся сливы? Как быть, если помимо фруктов магазин начнет продавать овощи?
Представим ассортимент как объект, в который входят:
- фрукты;
- овощи;
- возможность добавления любого товара.
Можно получить три уровня иерархии объектов, и тогда можно будет определить не только количество элементов в массиве. PHP позволит посчитать количество товара, его стоимость, определить время продажи по условиям годности и др. Использование данных в виде объектов позволяет придать им нужное качество, от которого всегда легко получить точное количество.