SplFixedArray of the PHPSPL standard library uses instances and splsplfixedarray. SplFixedArray of the PHPSPL standard library uses instances. splsplfixedarraySplFixedArray is mainly used to process array-related functions. Unlike common phparray, SplFixedArray is fixed length, the SplFixedArray of the php spl standard library is used as an example, and the splsplfixedarray
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: 10000Array(): 0.004000186920166SplArray(): 0.0019998550415039 Testing size: 40000Array(): 0.017001152038574SplArray(): 0.0090007781982422 Testing size: 160000Array(): 0.050002098083496SplArray(): 0.046003103256226 Testing size: 640000Array(): 0.19701099395752SplArray(): 0.16700983047485 Testing size: 2560000Array(): 0.75704312324524SplArray(): 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 ();}
Http://www.bkjia.com/PHPjc/998567.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/998567.htmlTechArticlePHP SPL standard library of SplFixedArray use instance, splsplsplfixedarray SplFixedArray is mainly processing array-related main function, and ordinary php array is different, it is fixed length, and...