SPL标准库专题9DatastructuresSplFixedArray

29次阅读

共计 1304 个字符,预计需要花费 4 分钟才能阅读完成。

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

类摘要

SplFixedArray  implements Iterator   , ArrayAccess   , Countable   {
    /* 方法 */
    public __construct  ([int $size  = 0] )
    public int count  (void)
    public mixed current  (void)
    
    //↓↓导入 PHP 数组,返回 SplFixedArray 对象;public static SplFixedArray fromArray  (array $array  [, bool $save_indexes  = true] )
    
    //↓↓把 SplFixedArray 对象数组导出为真正的数组;public array toArray  (void)
    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 bool valid  (void)
    public void __wakeup  (void)
}

Example

# Example1:$arr = new SplFixedArray(4);
try{$arr[0] = 'php';
  $arr[1] = 'Java';
  $arr[3] = 'javascript';
  $arr[5] = 'mysql';
}catch(RuntimeException $e){
  // 由于是定长数组,所以 $arr 超过定长 4; 就会抛出异常。echo $e->getMessage(),':',$e->getCode();
}

#Example2:// public static SplFixedArray fromArray (array $array [, bool $save_indexes = true] )
$arr = [
  '4' => 'php',
  '5' => 'javascript',
  '0' => 'node.js',
  '2' => 'linux'
];

// 第二参数默认为 true 的话,保持原索引,如果为 false 的话,就重组索引;
// 如下,如果重组了索引,那数组长度就为 4;如果不重组长度就为 6;
$arrObj = SplFixedArray::fromArray($arr);

$arrObj->rewind();
while($arrObj->valid()){echo $arrObj->key(),'=>',$arrObj->current();
  echo PHP_EOL;
  $arrObj->next();}


//↓↓由定长数组对象转换为真正的数组
$arr = $arrObj->toArray();
print_r($arr);

正文完
 0