Мы принимаем к оплате:

«Подарочный сертификат» от нашего Учебного Центра – это лучший подарок для тех, кто Вам дорог! Оплате обучение и подарите Вашим родным и близким обучение по любому из курсов!!!

«Сертификат на повторное обучение» дает возможность повторно пройти обучение в нашем Учебном Центре со скидкой 1000 рублей!

А также:


Php как узнать длину массива


Как узнать в php размер массива? Описание функции

Приветствую всех. В одной из прошлых статей я рассказывал о вычислении длины строки в байтах или словах. Размер массива же узнается по-другому. Как узнать в php размер массива?

Функция count и ее параметры

Для этого существует функция count и у нее есть 2 параметра. Один обязательный, а второй — нет. Первый, это, конечно же, сам массив, элементы которого нужно посчитать. Второй — это тип счета.

Тип счета может быть обычным, тогда его не нужно указывать, ведь он стоит по умолчанию. COUNT_RECURSIVE — это второй тип. Если он указан, то будет правильно посчитано количество элементов в многомерном массиве. То есть, используйте этот параметр только тогда, когда нужно посчитать элементы в многомерном массиве.

Особенность работы функции count

Хочу отметить одну интересную особенность. Функция вернет 0, даже если переменной-массива, который проверяется, не существует. Также 0 будет возвращен в случае пустого массива, который существует. Чтобы дополнительно тестировать, существует ли переменная, можно использовать функцию isset().

Примеры работы и использования count

Допустим, у нас есть массив с животными, нужно посчитать кол-во элементов в нем:

$animals[0] = «собака»; $animals[1] = «кошка»; $animals[2] = «мышь»;

count ($animals);

В php как установить размер массива?

Используйте SplFixedArray для массива фиксированного размера:

$array = new SplFixedArray(3); $array[0] = 1; $array[1] = 2; $array[2] = 3; $array[3] = 4; // RuntimeException

ответ дан netcoder 06 апр. '11 в 3:18

источник поделиться

В массивах PHP действительно упорядоченные карты и, следовательно, имеют размер, равный количеству элементов, которые они содержат, - если вы хотите создать пустой массив определенного размера, который вам придется заполнить чем-то.

Вы всегда можете заполнить его null значениями, используя array_fill:

$empty_arr = array_fill(0, $size, NULL);

ответ дан Mark Elliot 06 апр. '11 в 3:16

источник поделиться

Массивы не имеют установленного размера, они динамические (не сохраняются так же, как другие языки, такие как C).

Если вы хотите указать массив с размером по соображениям производительности, посмотрите:

SplFixedArray в стандартной библиотеке PHP.

ответ дан Jacob 06 апр. '11 в 3:17

источник поделиться

Вам нужно добавить элементы в массив, чтобы изменить размер. Независимо от того, имеет ли значение значение null или иначе.. вы должны добавить некоторый элемент для изменения размера.

ответ дан Mike Lewis 06 апр. '11 в 3:17

источник поделиться

Как узнать длину массива PHP и нужно ли ее узнавать?

Тривиальный вопрос как узнать длинну массива в PHP. В PHP нет функции lenght, как в JavaScript, но есть другая: count(), sizeOf() ее алиас.

int count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] ) $someArray = ['PHP', 'JavaScript', 'C++']; echo count($someArray); // print: 3

Есть еще созвучная функция strlen(), она используется для определения длинны строки.

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

Иногда важно знать превысил ли размер массива определенный лимит по количеству элементов. В таком случае на больших индексных массивах проще проверить существует ли определенный элемент массива, чем пересчитывать сколько всего в нем элементов.

if (isset($someAraay[$limit])) { //... }

Есть ли способ узнать, как "глубокий" массив PHP?

Остерегайтесь примеров, которые просто делают это рекурсивно.

Php может создавать массивы со ссылками на другие места в этом массиве и может содержать объекты с аналогичной рекурсивной ссылкой, и любой чисто рекурсивный алгоритм можно рассматривать в таком случае ОПАСНО наивно, поскольку он будет переполнять глубину стека, и никогда не заканчиваются.

(ну, он будет прерван, когда он превысит глубину стека, и в этот момент ваша программа будет смертельно закончиться, а не то, что я думаю, что вы хотите)

В прошлом я пробовал сериализацию → заменяя ссылочные маркеры на строки → десериализацию для моих нужд (часто отлаживая обратные трассировки с множеством рекурсивных ссылок в них), которые, похоже, работают нормально, вы получаете дыры везде, но это работает для этой задачи.

Для вашей задачи, если вы обнаружите, что ваш массив/структура имеет рекурсивные ссылки, возникающие в нем, вы можете взглянуть на комментарии, внесенные пользователем: http://php.net/manual/en/language.references.spot.php

а затем каким-то образом найти способ подсчета глубины рекурсивного пути.

Возможно, вам нужно будет вытащить свои книги CS по алгоритмам и поразить этих детей:

  • Wiki: Depth-limited-search
  • Wiki: поиск по глубине

(Извините за то, что так краток, но вникание в теорию графов немного больше подходит для этого формата;))


Смотрите также



Компьютерные курсы по направлениям:

Для начинающих


A

Компьютер для начинающих: Word, Excel, Access и другие программы!

Графические пакеты


B

Популярные пакеты Adobe Photoshop, CorelDraw, ArchiCAD, AutoCAD и другие!

WEB + анимация


C

Курсы по созданию сайтов, WEB-дизайну и крутой анимации в Adobe Flash!

Бухгалтерия + делопроизводство

Сетевые технологии


E

Курсы сборки ПК, системных администраторов и защиты информации!