国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP SPL標準庫之SplFixedArray使用實例

2024-05-04 23:35:06
字體:
來源:轉載
供稿:網(wǎng)友

這篇文章主要介紹了PHP SPL標準庫之SplFixedArray使用實例,SplFixedArray主要是處理數(shù)組相關的主要功能,它是固定長度的,比普通的數(shù)組處理更快,需要的朋友可以參考下

SplFixedArray主要是處理數(shù)組相關的主要功能,與普通php array不同的是,它是固定長度的,且以數(shù)字為鍵名的數(shù)組,優(yōu)勢就是比普通的數(shù)組處理更快。

看看我本機的Benchmark測試:

 

 
  1. ini_set('memory_limit','12800M'); 
  2.  
  3. for($size = 10000; $size < 10000000; $size *= 4) { 
  4. echo PHP_EOL . "Testing size: $size" . PHP_EOL; 
  5. for($s = microtime(true), $container = Array(), $i = 0; $i < $size; $i++) $container[$i] = NULL
  6. echo "Array(): " . (microtime(true) - $s) . PHP_EOL; 
  7.  
  8. for($s = microtime(true), $container = new SplFixedArray($size), $i = 0; $i < $size; $i++) $container[$i] = NULL
  9. echo "SplArray(): " . (microtime(true) - $s) . PHP_EOL; 

結果如下:

 

 
  1. Testing size: 10000 
  2. Array(): 0.004000186920166 
  3. SplArray(): 0.0019998550415039 
  4.  
  5. Testing size: 40000 
  6. Array(): 0.017001152038574 
  7. SplArray(): 0.0090007781982422 
  8.  
  9. Testing size: 160000 
  10. Array(): 0.050002098083496 
  11. SplArray(): 0.046003103256226 
  12.  
  13. Testing size: 640000 
  14. Array(): 0.19701099395752 
  15. SplArray(): 0.16700983047485 
  16.  
  17. Testing size: 2560000 
  18. Array(): 0.75704312324524 
  19. SplArray(): 0.67303895950317 

通常情況下SplFixedArray要比php array快上20%~30%,所以如果你是處理巨大數(shù)量的固定長度數(shù)組,還是強烈建議使用。

SplFixedArray類摘要如下:

 

 
  1. SplFixedArray implements Iterator , ArrayAccess , Countable { 
  2. /* 方法 */ 
  3. public __construct ([ int $size = 0 ] ) 
  4. public int count ( void ) 
  5. public mixed current ( void ) 
  6. public static SplFixedArray fromArray ( array $array [, bool $save_indexes = true ] ) 
  7. public int getSize ( void ) 
  8. public int key ( void ) 
  9. public void next ( void ) 
  10. public bool offsetExists ( int $index ) 
  11. public mixed offsetGet ( int $index ) 
  12. public void offsetSet ( int $index , mixed $newval ) 
  13. public void offsetUnset ( int $index ) 
  14. public void rewind ( void ) 
  15. public int setSize ( int $size ) 
  16. public array toArray ( void ) 
  17. public bool valid ( void ) 
  18. public void __wakeup ( void ) 

使用SplFixedArray:

 

  1. $arr = new SplFixedArray(4); 
  2. $arr[0] = 'php'
  3. $arr[1] = 1; 
  4. $arr[3] = 'python'
  5.  
  6. //遍歷, $arr[2] 為null 
  7. foreach($arr as $v) { 
  8. echo $v . PHP_EOL; 
  9.  
  10. //獲取數(shù)組長度 
  11. echo $arr->getSize(); //4 
  12.  
  13. //增加數(shù)組長度 
  14. $arr->setSize(5); 
  15. $arr[4] = 'new one'
  16.  
  17. //捕獲異常 
  18. try{ 
  19. echo $arr[10]; 
  20. } catch (RuntimeException $e) { 
  21. echo $e->getMessage(); 
  22. }  
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 麻阳| 阿合奇县| 潜山县| 咸丰县| 抚宁县| 昌都县| 永安市| 湖口县| 井研县| 麻江县| 大城县| 扎赉特旗| 绥芬河市| 望江县| 军事| 志丹县| 景谷| 新龙县| 尼木县| 德昌县| 黑山县| 和平县| 中卫市| 正阳县| 盘锦市| 竹北市| 横峰县| 雅安市| 台中县| 石棉县| 夏津县| 江津市| 略阳县| 浦北县| 茌平县| 西林县| 蕉岭县| 湾仔区| 阳高县| 开原市| 巴青县|