От автора: семьдесят пять, шесть, семь…. Извините, я сейчас уже заканчиваю! Семьдесят…. Сколько? Тьфу, опять сбился! В общем, создал массив, «накопипастил» в него элементов, а теперь не могут понять, сколько их. А чего я мучаюсь? Ведь с помощью PHP количество элементов в массиве подсчитать очень даже легко.
А индекс зачем?
Проще всего узнать длину обычного массива. Для этого нужно всего лишь вывести значение ключа последнего элемента. Хотя для этого тоже понадобится специальная функция (об этом позже). Хуже всего дело обстоит с ассоциативными массивами, в которых значение ключа может быть не только целочисленным, но и любым другим типом данных, поддерживаемым PHP.
Решение этой проблемы кажется простым лишь на первый взгляд. Но если длина массива «зашкаливает» за сотни или даже тысячи, тогда у любого пойдет кругом голова. И метод «раз ромашка, а я четвертую нашел» явно вам не поможет. Как не помог и мне :).
Чтобы доказать выше сказанное, создадим самый непредсказуемый массив в мире. Имеется в виду, что длина, ключ и значение каждого из элементов такой структуры задается случайным числом из определенного диапазона. Для этого мы использовали функцию rand():
1 2 3 4 5 6 7 8 9 10 |
<?php $random = array(); for ($a=1; $a<rand(10,30); $a++) { $random[rand(1,90)]=rand(5,100); } print_r($random); ?> |
Узнаем ширину массива
Легче всего узнать количество элементов в массиве PHP можно с помощью функции count(). Причем она будет возвращать его длину в любом случае. Даже в столь тяжелом, как наш :). Пример использования данной функции:
1 2 3 4 5 6 7 8 9 10 |
<?php $random = array(); for ($a=1; $a<rand(10,30); $a++) { echo $random[rand(1,90)]=rand(5,100)."<br />"; } echo "Длина массива ".count($random); ?> |
Еще один метод, как подсчитать количество элементов в массиве PHP, заключается в применении функции var_dump(). Но с ее помощью можно узнать «численность» элементов визуально. Данная функция выводит всю информацию о передаваемой ей в качестве параметра переменной: тип, длину (если это array) и значение:
1 2 3 4 5 6 7 8 9 10 |
<?php $random = array(); for ($a=1; $a<rand(10,30); $a++) { $random[rand(1,90)]=rand(5,100); } var_dump($random); ?> |
Другие варианты
Существуют и другие варианты, чтобы посчитать количество элементов в массивах PHP. Например, метод «засланного казачка». Для этого мы инициализируем внутри цикла for новую переменную. При каждой итерации цикла к ее значению будет прибавляться 1(с помощью инкремента). Затем под телом цикла мы выводим значение «засланного казачка» и узнаем длину массива.
1 2 3 4 5 6 7 8 9 |
<?php $random = array(); for ($a=1; $a<rand(10,30); $a++) { echo $random[rand(1,90)]=rand(5,100)."<br />"; $c++; } echo "Длина массива ".$c; ?> |
Чтобы узнать в PHP количество уникальных элементов массива, можно мудрить очень долго. Мой вариант заключается в использовании функции array_unique(), которая очищает входящий массив от повторяющихся значений. Затем просто возвращаем длину уже обработанного массива с помощью функции count() (число уникальных элементов):
1 2 3 4 5 6 7 8 9 10 |
<?php $arr1 = array("a","3","f","a","c","s","3","r","b"); echo "Входной массив"."<br/>"; var_dump($arr1); $arr2 = array_unique($arr1); echo "<br/>"; echo "Массив с уникальными значениями элементов"."<br/>"; var_dump($arr2); echo "<br/>"; echo "Во входном массиве было ".count($arr2)." уникальных элементов"."<br/>"; |
Вот так легко подсчитывается количество элементов в массиве PHP. А я мучился! Но благодаря этому материалу я воскресил в своей памяти нужные мне знания и посвятил в эту «магическую науку» вас. Хотя на деле магия оказалась обычной ловкостью ума и PHP :).