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

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

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主要是处理数组相关的主要功能,它是固...
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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!