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);

【SPL标准库专题(8)】 Datastructures:SplFixedArray的更多相关文章

  1. 【SPL标准库专题(1)】 SPL简介

    什么是SPL SPL是Standard PHP Library(PHP标准库)的缩写. 根据官方定义,它是"a collection of interfaces and classes th ...

  2. 【SPL标准库专题(9)】 Datastructures:SplObjectStorage

    PHP SPL SplObjectStorage是用来存储一组对象的,特别是当你需要唯一标识对象的时候. PHP SPL SplObjectStorage类实现了Countable,Iterator, ...

  3. 【SPL标准库专题(7)】 Datastructures:SplHeap & SplMaxHeap & SplMinHeap

    堆(Heap)就是为了实现优先队列而设计的一种数据结构,它是通过构造二叉堆(二叉树的一种)实现.根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆.二叉堆还常用于排序(堆排序). 类摘 ...

  4. 【SPL标准库专题(6)】 Datastructures:SplPriorityQueue

    普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头取出.在优先队列中,元素被赋予优先级.当访问元素时,具有最高优先级的元素最先取出.优先队列具有最高级先出 (largest-in,fir ...

  5. 【SPL标准库专题(5)】 Datastructures:SplStack & SplQueue

    这两个类都是继承自SplDoublyLinkedList,分别派生自SplDoublyLinkedList的堆栈模式和队列模式:所以放在一起来介绍: 堆栈SplStack # 类摘要 SplStack ...

  6. 【SPL标准库专题(4)】 Datastructures:SplDoublyLinkedList

    简述 双链表是一种重要的线性存储结构,对于双链表中的每个节点,不仅仅存储自己的信息,还要保存前驱和后继节点的地址. 类摘要 SplDoublyLinkedList implements Iterato ...

  7. 【SPL标准库专题(3)】 Classes

    我把SPL分为四个部分:Iterator,Classes,Datastructures,Function:而其中classes是就是做一些类的介绍(Iterator与Datastructures相关的 ...

  8. 【SPL标准库专题(10)】SPL Exceptions

    嵌套异常 了解SPL异常之前,我们先了解一下嵌套异常.嵌套异常顾名思义就是异常里面再嵌套异常,一个异常抛出,在catch到以后再抛出异常,这时可以通过Exception基类的getPrevious方法 ...

  9. 【SPL标准库专题(2)】 Iterator

    Iterator界面 本段内容来自阮一峰老师再加自己的部分注解 SPL规定,所有部署了Iterator界面的class,都可以用在foreach Loop中.Iterator界面中包含5个必须部署的方 ...

随机推荐

  1. SimpleVisitorMemberType类的visitClassType解读

    举个例子,如下: class CA<T>{ public T getVal(){ return null; } } interface IA{} interface IB{} public ...

  2. h5实现输入框fixed定位在屏幕最底部兼容性

    1.问题由来 做h5 已经有很长一段时间了,现在做的工作h5比pc上的更多,曾经解决pc端IE各个版本的兼容性也是伤透脑筋,原以为h5的会更好,殊不知,还有更头疼的问题,当设计师要设计一个聊天窗口,把 ...

  3. ObjectOutputStream

    public class Test { public static void main(String[] args) throws Exception { //writeObject(); readO ...

  4. 经典SQL语句大全(转)

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...

  5. React 基础实例教程

    园子都荒废两个月了,实在是懒呀.. 近段时间用React开发了几个页面,在使用过程中着实碰到了一些问题,估计刚开始学习的伙伴们都会遇到各种各样的坑 总结记录一下,只看文档是碰不上问题的,内容基础也不基 ...

  6. 15天学习MVC后的小结(分享经历与想法)

    学习MVC已经有半个月,看了看日历,刚好半个月.分享了好几篇练习的博文:一,<创建第一个MVC应用程序> http://www.cnblogs.com/insus/p/3358560.ht ...

  7. SQLite事务 SQLite插入多条语句为什么这么慢?.net (C#)

    今天有个朋友测试 SQLite,然后得出的结论是:SQLite 效率太低,批量插入1000条记录,居然耗时 2 分钟!下面是他发给我的测试代码.我晕~~~~~~ using System.Data; ...

  8. C# an error has occurred while updating the entries.see the log file

    message:An error occurred while updating the entries. See the inner exception for details. C# 在执行插入方 ...

  9. Debug模式下,测试app后缀名“-测试”

    target-->buildsetting-->user-defined 新建一个和上图尖括号一样的字符 如下图: 在debug中填入后缀名,然后在debug模式下运行程序,会发现debu ...

  10. Points on Cycle (hdu1700,几何)

    Points on Cycle Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...