Как узнать длину ассоциативного массива php
count
(PHP 4, PHP 5, PHP 7, PHP 8)
count — Подсчитывает количество элементов массива или чего-либо в объекте
Описание
Подсчитывает количество элементов массива или чего-то в объекте.
Смотрите раздел Массивы в этом руководстве для более детального представления о реализации и использовании массивов в PHP.
Список параметров
Если необязательный параметр mode установлен в COUNT_RECURSIVE (или 1), count() будет рекурсивно подсчитывать количество элементов массива. Это особенно полезно для подсчёта всех элементов многомерных массивов.
count() умеет определять рекурсию для избежания бесконечного цикла, но при каждом обнаружении выводит ошибку уровня E_WARNING (в случае, если массив содержит себя более одного раза) и возвращает большее количество, чем могло бы ожидаться.
Возвращаемые значения
Список изменений
Примеры
Пример #1 Пример использования count()
Результат выполнения данного примера:
var_dump ( count ( null ));
var_dump ( count ( false ));
?>
Результат выполнения данного примера:
Результат выполнения данного примера в PHP 7.2:
Результат выполнения данного примера в PHP 8:
Пример #3 Пример рекурсивного использования count()
Смотрите также
User Contributed Notes 17 notes
[Editor’s note: array at from dot pl had pointed out that count() is a cheap operation; however, there’s still the function call overhead.]
If you are on PHP 7.2+, you need to be aware of «Changelog» and use something like this:
My function returns the number of elements in array for multidimensional arrays subject to depth of array. (Almost COUNT_RECURSIVE, but you can point on which depth you want to plunge).
I actually find the following function more useful when it comes to multidimension arrays when you do not want all levels of the array tree.
$arr [ ‘__been_here’ ] = true ;
to end the debate: count() is the same as empty()
results on my computer:
count : double(0.81396999359131)
empty : double(0.81621310710907)
using isset($test[0]) is a bit slower than empty;
test without adding value to the array in function ****Test: still the same.
A function of one line to find the number of elements that are not arrays, recursively :
Get maxWidth and maxHeight of a two dimensional array.
Note:
1st dimension = Y (height)
2nd dimension = X (width)
e.g. rows and cols in database result arrays
You can not get collect sub array count when there is only one sub array in an array:
$a = array ( array (‘a’,’b’,’c’,’d’));
$b = array ( array (‘a’,’b’,’c’,’d’), array (‘e’,’f’,’g’,’h’));
echo count($a); // 4 NOT 1, expect 1
echo count($b); // 2, expected
For a Non Countable Objects
Warning: count(): Parameter must be an array or an object that implements Countable in example.php on line 159
#Quick fix is to just cast the non-countable object as an array..
As I see in many codes, don’t use count to iterate through array.
Onlyranga says you could declare a variable to store it before the for loop.
I agree with his/her approach, using count in the test should be used ONLY if you have to count the size of the array for each loop.
You can not get collect sub array count when use the key on only one sub array in an array:
$a = array(«a»=>»appple», b»=>array(‘a’=>array(1,2,3),’b’=>array(1,2,3)));
$b = array(«a»=>»appple», «b»=>array(array(‘a’=>array(1,2,3),’b’=>array(1,2,3)), array(1,2,3),’b’=>array(1,2,3)), array(‘a’=>array(1,2,3),’b’=>array(1,2,3))));
echo count($a[‘b’]); // 2 NOT 1, expect 1
echo count($b[‘b’]); // 3, expected
To get the count of the inner array you can do something like:
$inner_count = count($array[0]);
echo ($inner_count);
About 2d arrays, you have many way to count elements :
Criada para contar quantos níveis um array multidimensional possui.
/* Verifica se o ARRAY foi instanciado */
if (is_setVar($matrix))<
/* Verifica se a variável é um ARRAY */
if(is_array($matrix))<
In special situations you might only want to count the first level of the array to figure out how many entries you have, when they have N more key-value-pairs.
If you want to know the sub-array containing the MAX NUMBER of values in a 3 dimensions array, here is a try (maybe not the nicest way, but it works):
$cat_poids_max[‘M’][‘Seniors’][] = 55;
$cat_poids_max[‘M’][‘Seniors’][] = 60;
$cat_poids_max[‘M’][‘Seniors’][] = 67;
$cat_poids_max[‘M’][‘Seniors’][] = 75;
$cat_poids_max[‘M’][‘Seniors’][] = 84;
$cat_poids_max[‘M’][‘Seniors’][] = 90;
$cat_poids_max[‘M’][‘Seniors’][] = 100;
//.
$cat_poids_max[‘F’][‘Juniors’][] = 52;
$cat_poids_max[‘F’][‘Juniors’][] = 65;
$cat_poids_max[‘F’][‘Juniors’][] = 74;
$cat_poids_max[‘F’][‘Juniors’][] = 100;
Последствия копипаста или считаем в PHP количество элементов в массиве
Дата публикации: 2016-12-26
От автора: семьдесят пять, шесть, семь…. Извините, я сейчас уже заканчиваю! Семьдесят…. Сколько? Тьфу, опять сбился! В общем, создал массив, «накопипастил» в него элементов, а теперь не могут понять, сколько их. А чего я мучаюсь? Ведь с помощью PHP количество элементов в массиве подсчитать очень даже легко.
А индекс зачем?
Проще всего узнать длину обычного массива. Для этого нужно всего лишь вывести значение ключа последнего элемента. Хотя для этого тоже понадобится специальная функция (об этом позже). Хуже всего дело обстоит с ассоциативными массивами, в которых значение ключа может быть не только целочисленным, но и любым другим типом данных, поддерживаемым PHP.
Чтобы доказать выше сказанное, создадим самый непредсказуемый массив в мире. Имеется в виду, что длина, ключ и значение каждого из элементов такой структуры задается случайным числом из определенного диапазона. Для этого мы использовали функцию rand():
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Ассоциативные массивы в PHP с примерами
Массивы — способ хранить много похожей информации в одном месте.
Массив проще всего представить как много подписанных коробок при переезде. В каждой коробке может лежать что угодно, например, числа, строки, объекты или даже другие коробки.
Зачем нужны массивы
В массивах хранится информация — например, о том, что лежит в каждой коробке. В коробки можно заглянуть, используя индекс элемента — номер коробки.
Каждая коробка — элемент массива, номер под ней — индекс. То, что лежит внутри коробки — значение элемента.
Как создать массив в PHP
Чтобы создать массив в PHP напишем так:
Теперь есть два способа туда что-то добавить. Если мы знаем, на какое место в массиве вставить элемент, используем индекс.
Если мы не знаем конкретные индексы или просто хотим добавить элементы в массив по порядку, нужна такая запись:
Нумерация в массивах
По умолчанию счёт элементов массива идёт от нуля. То есть при обращении к коробкам нужно помнить, что у первой номер ноль, у второй — 1, и так далее.
Здесь у второго элемента массива номер 1, а значение — 2
Но массиву можно задать любую нумерацию. Допустим, мы хотим записать в массив значения степеней двойки.
Этот код создаст массив из трёх элементов, с номерами 2, 4 и 7. Это легко проверить, если запустить его:
Ассоциативные массивы в PHP
Это такие же массивы, только у них индекс не число, а строка. Или что угодно ещё. Неудобно подписывать коробки при переезде по номерам — но если написать «Кухня», «Спальня» или «Гостиная», то сразу будет понятно, где что.
Индекс в таком случае называется ключом — можно представить, что коробка закрыта на замок, а знание ключа поможет её открыть.
Возьмём кухонную коробку, в которой лежат ложки, ножи и тарелки. Можно собрать её двумя способами. Так:
Как вывести массив
Ассоциативные массивы можно использовать в вакууме, но мы рассмотрим случаи, когда они используются в настоящих сайтах.
Это форма обратной связи с тремя полями. Обратите внимание на атрибуты name в каждом из полей ввода.
Это такая же форма, как выше. Разница в method=»get» — и чуть позже расскажу, в чём ещё.
Значительная разница в том, что при загрузке страницы с таким кодом, в адресе страницы появятся данные из формы.
С получением данных через GET и POST можно поэкспериментировать в первой главе курса «Знакомство с PHP».
Получение массива из базы MySQL
Ещё один частый случай использования ассоциативных массивов — при загрузке данных из базы данных. И если мы храним большую таблицу в базе, то может быть неудобно назначать столбцам номера. А вот чтобы у каждого элемента ключом стал заголовок — хорошая практика, так и запоминать будет удобнее.
Допустим, у нас есть база данных в MySQL, мы подключаемся к ней, делаем запрос и получаем список пользователей.
Разбираем код
Заводим пустой массив для полученных данных.
В этой строчке начинаем построчно считывать результаты.
И если результаты есть, записываем их в ассоциативный массив.
Упражнения с массивами на PHP
У нас есть бесплатный интерактивный курс, где можно без установки PHP, прямо в браузере написать код для реального сайта. И заодно разобраться с массивами, циклами и тем, как работает вся эта магия.
array_count_values
(PHP 4, PHP 5, PHP 7, PHP 8)
array_count_values — Подсчитывает количество всех значений массива
Описание
Список параметров
Массив подсчитываемых значений
Возвращаемые значения
Возвращает ассоциативный массив со значениями array в качестве ключей и их количества в качестве значений.
Ошибки
Генерирует ошибку уровня E_WARNING для каждого элемента, не являющегося строкой ( string ) или целым числом ( int ).
Примеры
Пример #1 Пример использования array_count_values()
Результат выполнения данного примера:
Смотрите также
User Contributed Notes 15 notes
Simple way to find number of items with specific values in multidimensional array:
Based on sergolucky96 suggestion
Simple way to find number of items with specific *boolean* values in multidimensional array:
The case-insensitive version:
I couldn’t find a function for counting the values with case-insensitive matching, so I wrote a quick and dirty solution myself:
Array
(
[J. Karjalainen] => 3
[60] => 2
[j. karjalainen] => 1
[Fastway] => 2
[FASTWAY] => 1
[fastway] => 1
[YUP] => 1
)
Array
(
[J. Karjalainen] => 4
[60] => 2
[Fastway] => 4
[YUP] => 1
)
I don’t know how efficient it is, but it seems to work. Needed this function in one of my scripts and thought I would share it.
I find a very simple solution to count values in multidimentional arrays (example for 2 levels) :
Yet Another case-insensitive version of array_count_values()
Array
(
[j. karjalainen] => 4
[60] => 2
[fastway] => 4
[yup] => 1
)
byron at byronrode dot co dot za, here are some benchmarks.
__array_keys()__
Count:515
Time:0.0869138240814
Memory:33016
__$needle_array[]__
Count:515
Time:0.259949922562
Memory:24792
__$number_of_instances++__
Count:515
Time:0.258481025696
Memory:0
However, when you use an array of strings by calling md5(rand(1, 2000)), the performance boosts become less significant:
__array_count_values()__
Count:499
Time:0.491794109344
Memory:184328
__array_keys()__
Count:499
Time:0.36399102211
Memory:30072
__$needle_array[]__
Count:499
Time:0.568728923798
Memory:22104
__$number_of_instances++__
Count:499
Time:0.574353933334
Memory:0
Results are similar for string->string haystacks with foreach traversal.
PHP5 Массивы
Массив хранит несколько значений в одной переменной:
Пример
Что такое массив?
Если у Вас есть список элементов (например: список названий автомобилей), хранение автомобилей в одиночных переменных может выглядеть следующим образом:
Однако, что делать, если Вам нужно вывести из цикла автомобили, и нужно найти конкретный? А, если у Вас не 3 машины, а 300?
Решение заключается в создании массива!
Массив может содержать много значений под одним именем, и Вы можете получить доступ к значениям, ссылаясь на номер индекса.
PHP Создание массива
PHP функция array() используется для создания массива:
PHP существует три типа массивов:
PHP Индексные массивы
Существует два способа создания индексированных массивов:
Индекс может быть назначен автоматически (индекс всегда начинается с 0), как это:
или индекс можно назначить вручную:
Пример
PHP Получить длину массива
Функция count() используется для возврата длины (количество элементов) из массива:
Пример
PHP Цикл через индексированный массив
Пример
PHP Ассоциативный массив
Существует два способа создания ассоциативного массива:
Затем именованные ключи можно использовать в скрипте:
Пример
PHP Цикл через ассоциативный массив
Пример
PHP Многомерный массив
Многомерные массивы будет объяснено в расширенном разделе PHP.
PHP Полная ссылка на массив
Для полной справки всех функций массива, перейдите к нашему полному PHP Справочник массива.
Справочник содержит краткое описание и примеры использования каждой функции!