Sizeof PHP: veličina polja i objekata, smanjuje vrijeme izvođenja skripti

Funkcija sizeof u php je alias count (), count (), prima broj "ključ-vrijednosti" niza ili objekta. Obvezni parametar je niz ili objekt, neobavezno - druga vrijednost je COUNT_RECURSIVE, ili 1 (zadana 0), ako je instalirana, tada smatra da je rekurzivna.

PHP: Kako smanjiti broj iteracija u petlji i skratiti vrijeme izvršenja skripte?

Budući da se count () i sizeof php često koriste u petlji, trebali biste ih temeljito proučiti.

$ array = array (
"fruit" => array (
"jabuka",
"banana",
"narančasta",
,
"povrće" => niz (
"krumpir",
rajčica,
)),
);

echo "Default =" .sizeof ($ array); //Default = 2
echo "Recursive =" .sizeof ($ array, 1); //Rekurzivno = 7

Testiranje velikih polja u petlji (preko 65.000 stavki) pokazalo je da je sizeof () brži od count (), pa je smisleno primijeniti ga u praksi.

& lt; skript async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
& lt ;! - fb_336x280_1 - & gt;

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

U ciklusima je uvijek bolje zamijeniti veličinu php s varijablom, inače će se veličina polja odrediti pomoću svake iteracije koja usporava proces.

$ test = niz (123 4);
$ sizeof_test = sizeof ($ test);
za ($ it = 0; $ echo $ test [$ it];
}

Ako testirate petlju na 1000 jednobajtnih vrijednosti, vrijeme prolaska s unaprijed definiranom varijablom je manje od

Razmotrimo niz s nultim vrijednostima:

$ test2 = array (", null," false ", 0);
var_dump (sizeof ($ test2) ////izlaz int

var_dump (sizeof (array_filter ($ test2))) //izlaz int

Kao što se može vidjeti iz primjera, sizeof php (i count) previše)uzeti u obzir broj elemenata, uključujući i nulu, pa je potrebno uzeti u obzir i (ako je potrebno) izbrisati prazne vrijednosti pomoću array_filter ili druge korisničke funkcije.

& lt; skript async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
& lt ;! - fb_336x280_2 - & gt;

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

Dodati niz $ test2:

$ test2 = array (", nula," false ", 0 array ()); //print int 


$ test2 = niz (", nula," false ", 0 polje (null)); //će ispisati int


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

U ovom primjeru, array_filter je izbrisao sve prazne vrijednosti jednodimenzionalnog niza, ali ova funkcija nema rekurzivno djelovanje, tako da je vrijednost "null" u "internom" nizu lijeva, što znači da je veličina php uzima u obzir.

Da vidimo što će se dogoditi ako uklonite polje array_filter?

​​
$ test2 = niz (", nula," false ", 0 array ()); //izlaz int 
$ test2 = niz (", nula, "false" , 0 niz (nula)); //izlaz int
$ t_rec = array (", nula," false ", 0 array ()); //izlaz int
$ t_rec = array (", zero, "false) ', 0 niz (null)); //izlaz int

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

Ako prazni nisu namjerno uneseni u kod, bolje ih je riješiti pomoću filtarskih funkcija prije pokretanja petlje. Time ćete ukloniti dodatne iteracije ciklusa i skratiti vrijeme izvršenja procesa.

Kako izračunati StdClass objekt stvoren s json_decode pomoću sizeof php?
$ json = '{' foo ': bar, broj: 10, automobil: BMW}';
$ stdInstance = json_decode ($ json);
var_dump (sizeof ((array) $ stdInstance)); //će ispisati int

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


Sizeof () definira broj elemenata niza ili objekta Countable. StdClass nije ni jedno ni drugo. Da biste dobili objekt u obliku niza,koristite funkciju get_object_vars. Prva opcija (polje) također radi, ali i druga opcija izgleda pouzdanije.
Get_object_vars koriste se za dobivanje ne-statičkih svojstava objekta, što je savršeno prilagođeno našem primjeru.

Povezane publikacije