Heim >php教程 >php手册 >PHP SPL标准库之SplFixedArray使用实例

PHP SPL标准库之SplFixedArray使用实例

WBOY
WBOYOriginal
2016-06-06 20:04:16898Durchsuche

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

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

看看我本机的Benchmark测试:

ini_set('memory_limit','12800M'); for($size = 10000; $size

结果如下:

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类摘要如下:

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:

$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(); }

Stellungnahme:
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