Home >Backend Development >PHP Tutorial >PHP SPL standard library SplFixedArray usage example_PHP tutorial

PHP SPL standard library SplFixedArray usage example_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 09:53:421025browse

Use examples of SplFixedArray in the PHP SPL standard library

This article mainly introduces the use examples of SplFixedArray in the PHP SPL standard library. SplFixedArray is mainly used to handle the main functions related to arrays. It is Fixed length, faster than ordinary array processing, friends in need can refer to it

SplFixedArray is mainly used to process arrays. Different from ordinary php arrays, it is a fixed-length array with numbers as key names. The advantage is that it is faster than ordinary array processing.

Take a look at my local Benchmark test:

ใ€€?

1

2

3

4

5

6

7

8

9

10

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;

}

1

2

3

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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

<๐ŸŽœ>4<๐ŸŽœ> <๐ŸŽœ>5<๐ŸŽœ> <๐ŸŽœ>6<๐ŸŽœ> <๐ŸŽœ>7<๐ŸŽœ> <๐ŸŽœ>8<๐ŸŽœ> <๐ŸŽœ>9<๐ŸŽœ> <๐ŸŽœ>10<๐ŸŽœ>
<๐ŸŽœ> <๐ŸŽœ>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 results are as follows: <๐ŸŽœ> <๐ŸŽœ>ใ€€?<๐ŸŽœ>
<๐ŸŽœ>1<๐ŸŽœ> <๐ŸŽœ>2<๐ŸŽœ> <๐ŸŽœ>3<๐ŸŽœ> <๐ŸŽœ>4<๐ŸŽœ> <๐ŸŽœ>5<๐ŸŽœ> <๐ŸŽœ>6<๐ŸŽœ> <๐ŸŽœ>7<๐ŸŽœ> <๐ŸŽœ>8<๐ŸŽœ> <๐ŸŽœ>9<๐ŸŽœ> <๐ŸŽœ>10<๐ŸŽœ> <๐ŸŽœ>11<๐ŸŽœ> <๐ŸŽœ>12<๐ŸŽœ> <๐ŸŽœ>13<๐ŸŽœ> <๐ŸŽœ>14<๐ŸŽœ> <๐ŸŽœ>15<๐ŸŽœ> <๐ŸŽœ>16<๐ŸŽœ> <๐ŸŽœ>17<๐ŸŽœ> <๐ŸŽœ>18<๐ŸŽœ> <๐ŸŽœ>19<๐ŸŽœ> <๐ŸŽœ> <๐ŸŽœ>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<๐ŸŽœ> <๐ŸŽœ>

Usually SplFixedArray is 20%~30% faster than PHP array, so if you are dealing with a huge number of fixed-length arrays, it is still strongly recommended to use it.

The SplFixedArray class summary is as follows:

ใ€€?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

SplFixedArray implements Iterator , ArrayAccess , Countable {

/* ๆ–นๆณ• */

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 )

}

1

2

3

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

$arr = new SplFixedArray(4);

$arr[0] = 'php';

$arr[1] = 1;

$arr[3] = 'python';

//้ๅŽ†๏ผŒ $arr[2] ไธบnull

foreach($arr as $v) {

echo $v . PHP_EOL;

}

//่Žทๅ–ๆ•ฐ็ป„้•ฟๅบฆ

echo $arr->getSize(); //4

ย 

//ๅขžๅŠ ๆ•ฐ็ป„้•ฟๅบฆ

$arr->setSize(5);

$arr[4] = 'new one';

ย 

//ๆ•่Žทๅผ‚ๅธธ

try{

echo $arr[10];

} catch (RuntimeException $e) {

echo $e->getMessage();

}

4

5

7 8 9 10 11
12 13
14 15 16 17 18 19
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) }
Using SplFixedArray: ใ€€?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 $arr = new SplFixedArray(4); $arr[0] = 'php'; $arr[1] = 1; $arr[3] = 'python'; //Traverse, $arr[2] is null foreach($arr as $v) { echo $v . PHP_EOL; } //Get the array length echo $arr->getSize(); //4 //Increase the array length $arr->setSize(5); $arr[4] = 'new one'; //Catch exception try{ echo $arr[10]; } catch (RuntimeException $e) { echo $e->getMessage(); }
http://www.bkjia.com/PHPjc/1000112.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1000112.htmlTechArticleSplFixedArray usage examples of PHP SPL standard library. This article mainly introduces SplFixedArray usage examples of PHP SPL standard library, SplFixedArray. Mainly dealing with the main functions related to arrays, it is a solid...
Statement๏ผš
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn