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

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

PHP: Как да се намали броят на повторенията в цикъл и да се намали времето за изпълнение на скрипта?

Тъй като count () и sizeof php се използват много често в цикли, трябва да ги проучите внимателно.

$ array = масив (
"fruit" = & gt; масив (
"ябълка",
"банан",
"оранжев",
,
"зеленчуци" => масив (
"картофи",
домати,
)),
);

echo "Default =" .sizeof ($ array); //По подразбиране = 2
echo "Recursive =" .sizeof ($ array, 1); //Recursive = 7

Тестване на големи масиви в цикъл (над 65 000 елемента) показва, че sizeof () е по-бърз от count (), така че има смисъл да се приложи на практика.

& lt; скрипт async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
& lt ;! - fb_336x280_1 - & gt;

& lt; script & gt; (adsbygoogle = window.adsbygoogle || []). push ({});

В цикъла винаги е по-добре да се замени размерът на php с променлива, в противен случай размерът на масива ще се определя от всяка итерация, която забавя процеса.

$ test = масив (123 4);
$ sizeof_test = sizeof ($ test);
за ($ it = 0; $ echo $ test [$ it];
}

Ако тествате цикъл при 1000 еднобайтови стойности, тогава времето за преминаване с предварително дефинираната променлива е по-малко от

Разгледайте масив с нулеви стойности:

$ test2 = array (", null," false ", 0);
var_dump (sizeof ($ test2) ////изход int

var_dump (sizeof (array_filter ($ test2))) //изход int

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

& lt; скрипт async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
& lt ;! - fb_336x280_2 - & gt;

& lt; script & gt; (Adsbygoogle = window.adsbygoogle || []) Push ({}).

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

$ test2 = array (", нула," false ", 0 array ()); //print int 


$ test2 = масив (", нула," false ", 0 масив (нула)); //ще отпечата int


var_dump (sizeof (array_filter ($ test2)));

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

Да видим какво ще стане, ако премахнете array_filter?

​​
$ test2 = масив (", нула," лъжа ", 0 масив ()); //изход int 
$ test2 = масив (", нула, "фалшиви") , 0 масив (нула)); //изход int
$ t_rec = масив (", нула," false ", 0 масив ()); //изход int
$ t_rec = array (", zero, "false) ', 0 масив (нула)); //изход int

var_dump (sizeof ($ test2));
var_dump (sizeof ($ t_rec, 1));

Ако празните не са били преднамерено въведени в кода, по-добре е да се отървете от тях с помощта на филтърни функции, преди да започнете цикъла. Това ще премахне допълнителните повторения на цикъла и ще съкрати времето за изпълнение на процеса.

Как да изчислим обекта на StdClass, създаден с json_decode, използвайки sizeof php?

$ json = '{' foo ': bar, номер: 10, автомобил: BMW}';
$ stdInstance = json_decode ($ json);
var_dump (sizeof ((array) $ stdInstance)); //ще отпечата int

var_dump (sizeof (get_object_vars ($ stdInstance))); //output int


Sizeof () определя броя на елементите на масив или обект Countable. StdClass не е нито едното, нито другото. За да получите обект под формата на масив,използвайте функцията get_object_vars. Първата опция (масив) също работи, но все пак втората опция изглежда по-надеждна.
Get_object_vars се използват за получаване на нестатични свойства на обекта, който е напълно подходящ за нашия пример.

Свързани публикации