This article describes how to use SplFixedArray in the phpspl standard library. SplFixedArray is mainly used to process array-related functions. It is fixed-length and faster than normal Array Processing, if you need a friend
This article mainly introduces the use of SplFixedArray in the php spl standard library. SplFixedArray is mainly used to process array-related functions. It is fixed-length and faster than normal Array Processing, if you need a friend
SplFixedArray is mainly used to process array-related functions. Unlike Common php arrays, SplFixedArray is an array with fixed length and key names ,, the advantage is faster processing than normal arrays.
Check my local Benchmark test:
Ini_set ('memory _ limit ', '12800m'); for ($ size = 10000; $ size <10000000; $ size * = 4) {echo PHP_EOL. "Testing size: $ size ". PHP_EOL; for ($ s = microtime (true), $ container = Array (), $ I = 0; $ I <$ size; $ I ++) $ container [$ I] = NULL; echo "Array ():". (microtime (true)-$ s ). PHP_EOL; for ($ s = microtime (true), $ container = new SplFixedArray ($ size), $ I = 0; $ I <$ size; $ I ++) $ container [$ I] = NULL; echo "SplArray ():". (microtime (true)-$ s ). PHP_EOL ;}
The result is as follows:
Testing size: 10000 Array (): 0.004000186920166 SplArray (): 0.0019998550415039 Testing size: 40000 Array (): 0.017001152038574 SplArray (): 0.0090007781982422 Testing size: 160000 Array (): 0.050002098083496 SplArray (): 0.046003103256226 Testing size: 640000 Array (): 0.19701099395752 SplArray (): 0.16700983047485 Testing size: 2560000 Array (): 0.75704312324524 SplArray (): 0.67303895950317
In general, SplFixedArray is 20% ~ Faster than php array ~ 30%, so if you are dealing with a large number of fixed-length arrays, it is strongly recommended to use.
The summary of the SplFixedArray class is as follows:
SplFixedArray implements Iterator, ArrayAccess, Countable {/* Method */public _ construct ([int $ size = 0]) public int count (void) public mixed current (void) public static SplFixedArray fromArray (array $ array [, bool $ save_indexes = true]) public int getSize (void) public int key (void) public void next (void) public bool offsetExists (int $ index) public mixed offsetGet (int $ index) public void offsetSet (int $ index, mixed $ newval) public void offsetUnset (int $ index) public void rewind (void) public int setSize (int $ size) public array toArray (void) public bool valid (void) public void _ wakeup (void )}
Use SplFixedArray:
$ Arr = new SplFixedArray (4); $ arr [0] = 'php'; $ arr [1] = 1; $ arr [3] = 'python '; // traversal, $ arr [2] is nullforeach ($ arr as $ v) {echo $ v. PHP_EOL;} // obtain the array length echo $ arr-> getSize (); // 4 // increase the array length $ arr-> setSize (5 ); $ arr [4] = 'new one'; // catch exceptions try {echo $ arr [10];} catch (RuntimeException $ e) {echo $ e-> getMessage ();}