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

PHP SPL standard library SplFixedArray usage example_PHP tutorial

WBOY
Release: 2016-07-13 09:53:42
Original
1022 people have browsed it

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...
Related labels:
php
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template