09-06-2018 12:02

Как определить количество элементов в массиве PHP?

Количество элементов в массиве PHP предлагается определять функцией count(). В большинстве случаев это простой и практичный способ. Обычный сайт не требует особой логики, не содержит сложных систем объектов, поэтому использования функции count() будет достаточно.

В случаях, когда массивы выступают в качестве коллекций объектов или представляют собой семантически взаимосвязанные структуры данных, вычисление количества определяется смыслом этих данных.

Синтаксис и использование функции count()

PHP sprintf: форматирование и обработка строкВам будет интересно:PHP sprintf: форматирование и обработка строк

Результат функции - количество элементов, содержащихся в массиве, которые переданы в качестве параметра. Ниже представлен пример PHP: подсчет количества элементов в массиве.

Первоначально был создан массив из 13 случайных элементов. Каждый элемент - строка символов различного содержания и длины. Затем было удалено два элемента и добавлен один. По логике 13 - 2 + 1 = 12, но функция count() считает иначе. Ниже приведен код вывода этого результата.

Поскольку был добавлен массив, то число элементов должно было увеличиться на количество элементов этого массива. Понятно, что цель функции count() - посчитать количество элементов в массиве. PHP меньше всего интересует, что элементами массива могут быть тоже массивы. Но в прикладном отношении далеко не всегда элементы массива включают в себя разнородные другие массивы.

Особенности структурирования данных

Если речь идет об обработке данных по поставке фруктов в магазин, то элементом может быть ананас и различные сорта яблок или груш. Заводить на все три позиции ассортимента три различных структуры данных нецелесообразно по множеству причин.

Один массив будет всегда лучшим решением, но в нем может быть как строчная строка - «ананас», так и совокупность строк - «сорт яблок» или «сорт груш». Строк может быть множество, все зависит от:

  • даты поставки;
  • сорта;
  • количества;
  • цены и др.

Но смысл строки всего массива и строки подмассива всегда будет один. В таком представлении данных количество элементов в массиве PHP не определить по своей логике. Здесь массив должен иметь собственный функционал для определения количества. Функции count() не свойственна рекурсия, и ее использование для определения точного количества элементов - не гарантия точного результата.

Объекты и массивы

Массивы - несомненное качество и эффективность для представления данных. Особенно эффективно использование массивов в качестве коллекций объектов. Классический цикл перебора элементов массива или работа в стиле стека: только с первым элементом или только с последним (после использования элемент удаляется, но становится доступным следующий или предыдущий). Не важно, как работать с коллекцией объектов, но всегда каждому элементу такой коллекции можно назначить собственную функцию определения количества.

Тогда, не используя функцию count(), количество элементов в массиве PHP можно определить через последовательный вызов метода каждого элемента в массиве. Формально такая логика имеет под собой основание: есть ассортимент фруктов, поставляемых в магазин, но как быть, если ассортимент увеличится, и к ананасам, яблокам и грушам добавятся сливы? Как быть, если помимо фруктов магазин начнет продавать овощи?

Представим ассортимент как объект, в который входят:

  • фрукты;
  • овощи;
  • возможность добавления любого товара.

Можно получить три уровня иерархии объектов, и тогда можно будет определить не только количество элементов в массиве. PHP позволит посчитать количество товара, его стоимость, определить время продажи по условиям годности и др. Использование данных в виде объектов позволяет придать им нужное качество, от которого всегда легко получить точное количество.



Источник