Sizeof PHP: размер массивов и объектов, уменьшение времени выполнения скриптов

Sizeof PHP: размер массивов и объектов, уменьшение времени выполнения скриптов

Функция sizeof в php является псевдонимом count(), как и count(), получает количество "ключ - значение" массива или объекта. Обязательным параметром является массив или объект, необязательным - второе значение COUNT_RECURSIVE, или 1 (по умолчанию - 0), если установлен, то считает рекурсивно.

PHP: как сократить количество итераций в цикле и уменьшить время выполнения скрипта?

Так как count() и sizeof php используются в циклах очень часто, то следует изучить их досконально.

$array = array(  	"fruit" =>array(  		"apple",   		"bananas",  		"orange",  	),  	"vegetables" =>array(  		"potatoes",   		"tomatoes",  	),  );    echo "По умолчанию = ".sizeof($array); //По умолчанию = 2  echo "Рекурсивно  = ".sizeof($array, 1); //Рекурсивно = 7   

Тестирование больших массивов в цикле (более 65000 элементов) показало, что sizeof() быстрее, чем count(), поэтому имеет смысл применять ее на практике.


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

Рассмотрим массив с нулевыми значениями:

$test2 = array( '', null, false, 0 );  var_dump( sizeof( $test2 ) ); //выведет int(4)  var_dump( sizeof( array_filter( $test2 ) ) ); //выведет int(0)

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


Добавим массив в $test2:

$test2 = array( '',null,false,0, array() );       //выведет int(0)  $test2 = array( '',null,false,0, array( null ) ); //выведет int(1)  var_dump( sizeof( array_filter( $test2 ) ) );

В данном примере array_filter удалил все пустые значения одномерного массива, но эта функция не имеет рекурсивного действия, поэтому значение "null" "внутреннего" массива осталось, а значит sizeof php его учитывает.

Давайте посмотрим что будет, если убрать array_filter?

$test2 = array('', null, false, 0, array() );       //выведет int(5)  $test2 = array('', null, false, 0, array( null ) ); //выведет int(5)  $t_rec = array('', null, false, 0, array() );       //выведет int(5)  $t_rec = array('', null, false, 0, array( null ) ); //выведет int(6)  var_dump( sizeof( $test2 ) );  var_dump( sizeof( $t_rec, 1 ) );

Если пустые значения не были введены в код намеренно, то лучше от них избавиться с помощью функций-фильтров прежде, чем запускать цикл. Это уберет лишние итерации цикла и сократит время на выполнение процесса.

Sizeof PHP считает пустые значения массива

Как посчитать объект StdClass созданный из json_decode с помощью sizeof php?

$json = '{ "foo": "bar", "number": 10 , "car": "BMW" }';  $stdInstance = json_decode( $json );  var_dump( sizeof( ( array )$stdInstance ) ); //выведет int(3)  var_dump( sizeof( get_object_vars( $stdInstance ) ) ); //выведет int(3)

Sizeof() определяет количество элементов массива или объекта Countable. StdClass не является ни тем, ни другим. Чтобы получить объект в виде массива, используйте функцию get_object_vars. Первый вариант с (array) тоже работает, но все же второй вариант кажется более надежным.

Sizeof PHP StdClass из json_decode

Get_object_vars применяют для получения нестатических свойств объекта, что вполне подходит для нашего примера.

PHP: время выполнения скрипта на практике
Время выполнения скрипта всегда имеет значение, а в некоторых случаях особенное. Если сайт или отдельный его элемент не функционирует как требуется, имеет смыл оценить время его исполнения и определить проблемные участки кода.
далее
Функция PHP set_time_limit() - управление временем исполнения скрипта
Управление временем исполнения PHP-скрипта посредством серверного языка имеет значение для целей тестирования и оптимизации алгоритма обработки данных. По сути, серверный язык обеспечивает работу сайта, но не контролирует ее. С посетителем работает ...
далее
PHP: работа со строками. Строковые функции PHP
Статья рассчитана на начинающих изучать PHP: в ней описаны самые распространенные функции, связанные с работой со строками.
далее
PHP: parse_url - анализ локатора ресурса
Содержание универсального локатора ресурсов посредством функции PHP parse_url может быть быстро разобрано на составные части и помещено в ассоциативный массив. Функция позволяет автоматически произвести основное преобразования и обработать ...
далее
Конструкция выбора switch case PHP
Условие и выбор - ключевые конструкции языка. Правильное принятие решений - основа качественного алгоритма и понятный, доступный для понимания код. Корректное оформление алгоритма и правильное использование комментариев относятся к факторам ...
далее
PHP: чтение PHP-файла. Работа с файлами в PHP: чтение, запись и рекомендации
Использование файлов удобно и эффективно даже при использовании базы данных. Можно оперировать файлами, изменять и создавать код сайта в процессе его работы, обрабатывать сложные документы форматов *.xlsx и *.docx. PHP чтение php файла позволяет выйти за рамки синтаксиса и возможностей предоставляемых PHP. Обработка сложных документов посредством PHP позволяет поднять работу с ними на качественно высокий уровень, значительно расширить функционал сайта.
далее
PHP: чтение PHP-файла. Работа с файлами в PHP: чтение, запись и рекомендации
PHP 7: что нового и когда выйдет?
Веб-разработка – это одно из самых главных направлений в программировании. И каждый разработчик, который работает в этой сфере и считает себя настоящим программистом, знаком с таким языком, как PHP.
далее
PHP 7: что нового и когда выйдет?
Практика PHP: сравнение строк
Хороший алгоритм сравнения строк имеет важное значение. Хотя к обработке информации в ее естественном виде языки программирования еще не пришли, правильное и эффективное использование имеющегося арсенала функций сравнения строк имеет значение.
далее
Практика PHP: сравнение строк
Функция strpos в PHP: определение позиции подстроки
Поиск вхождения подстроки в строку с помощью функции PHP strpos(). Типы входных и выходных параметров, примеры и тонкости использования. Похожие функции.
далее
Функция strpos в PHP: определение позиции подстроки
Namespace PHP: пример. Узнаем как использовать пространства имен в PHP?
Пространство имен всегда существовало как часть алгоритма и всегда было «глобальным». В ходе разработки больших проектов, когда создается множество файлов скриптов, многочисленные разработчики могут использовать одинаковые имена, что ставит любой проект под угрозу срыва. Идея пространства имен упростила процесс разработки и открыла программистам новые горизонты.
далее
Namespace PHP: пример. Узнаем как использовать пространства имен в PHP?