[关闭]
@a5635268 2016-02-23T16:57:17.000000Z 字数 1348 阅读 1210

【SPL标准库专题(8)】 Datastructures:SplFixedArray

SPL


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

类摘要

  1. SplFixedArray implements Iterator , ArrayAccess , Countable {
  2. /* 方法 */
  3. public __construct ([ int $size = 0 ] )
  4. public int count ( void )
  5. public mixed current ( void )
  6. //↓↓导入PHP数组,返回SplFixedArray对象;
  7. public static SplFixedArray fromArray ( array $array [, bool $save_indexes = true ] )
  8. //↓↓把SplFixedArray对象数组导出为真正的数组;
  9. public array toArray ( void )
  10. public int getSize ( void )
  11. public int key ( void )
  12. public void next ( void )
  13. public bool offsetExists ( int $index )
  14. public mixed offsetGet ( int $index )
  15. public void offsetSet ( int $index , mixed $newval )
  16. public void offsetUnset ( int $index )
  17. public void rewind ( void )
  18. public int setSize ( int $size )
  19. public bool valid ( void )
  20. public void __wakeup ( void )
  21. }

Example

  1. # Example1:
  2. $arr = new SplFixedArray(4);
  3. try{
  4. $arr[0] = 'php';
  5. $arr[1] = 'Java';
  6. $arr[3] = 'javascript';
  7. $arr[5] = 'mysql';
  8. }catch(RuntimeException $e){
  9. //由于是定长数组,所以$arr超过定长4;就会抛出异常。
  10. echo $e->getMessage(),' : ',$e->getCode();
  11. }
  12. #Example2:
  13. // public static SplFixedArray fromArray ( array $array [, bool $save_indexes = true ] )
  14. $arr = [
  15. '4' => 'php',
  16. '5' => 'javascript',
  17. '0' => 'node.js',
  18. '2' => 'linux'
  19. ];
  20. //第二参数默认为true的话,保持原索引,如果为false的话,就重组索引;
  21. //如下,如果重组了索引,那数组长度就为4;如果不重组长度就为6;
  22. $arrObj = SplFixedArray::fromArray($arr);
  23. $arrObj->rewind();
  24. while($arrObj->valid()){
  25. echo $arrObj->key(),'=>',$arrObj->current();
  26. echo PHP_EOL;
  27. $arrObj->next();
  28. }
  29. //↓↓由定长数组对象转换为真正的数组
  30. $arr = $arrObj->toArray();
  31. print_r($arr);
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注