PHP SPL标准库之SplFixedArray使用实例_PHP教程

WBOY
Freigeben: 2016-07-13 09:53:42
Original
995 Leute haben es durchsucht

PHP SPL标准库之SplFixedArray使用实例

   这篇文章主要介绍了PHP SPL标准库之SplFixedArray使用实例,SplFixedArray主要是处理数组相关的主要功能,它是固定长度的,比普通的数组处理更快,需要的朋友可以参考下

  SplFixedArray主要是处理数组相关的主要功能,与普通php array不同的是,它是固定长度的,且以数字为键名的数组,优势就是比普通的数组处理更快。

  看看我本机的Benchmark测试:

  ?

1

2

3

4

5

6

7

8

9

10

ini_set('memory_limit','12800M');

 

for($size = 10000; $size

echo PHP_EOL . "Testing size: $size" . PHP_EOL;

for($s = microtime(true), $container = Array(), $i = 0; $i

echo "Array(): " . (microtime(true) - $s) . PHP_EOL;

 

for($s = microtime(true), $container = new SplFixedArray($size), $i = 0; $i

echo "SplArray(): " . (microtime(true) - $s) . PHP_EOL;

}

  结果如下:

  ?

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

  通常情况下SplFixedArray要比php array快上20%~30%,所以如果你是处理巨大数量的固定长度数组,还是强烈建议使用。

  SplFixedArray类摘要如下:

  ?

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 )

}

  使用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';

 

//遍历, $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();

}

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1000112.htmlTechArticlePHP SPL标准库之SplFixedArray使用实例 这篇文章主要介绍了PHP SPL标准库之SplFixedArray使用实例,SplFixedArray主要是处理数组相关的主要功能,它是固...
Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage