PHP的SPL标准库
程序员文章站
2023-11-21 22:51:28
1,简介 SPL,全称 Standard PHP Library 中文是 标准PHP类库。是php内置的一些拓展类和拓展接口,其内容包含数据结构、迭代器、接口、异常、SPL函数,文件处理等内容。SPL拓展只能用于PHP5.3版本及以后,并且不需要进行额外的配置,可以直接使用。详细信息可以进入PHP官 ......
1,简介
spl,全称 standard php library 中文是 标准php类库。是php内置的一些拓展类和拓展接口,其内容包含数据结构、迭代器、接口、异常、spl函数,文件处理等内容。spl拓展只能用于php5.3版本及以后,并且不需要进行额外的配置,可以直接使用。详细信息可以进入php官方网站查看。 这里主要说明spl中的数据结构内容的使用。
2,使用
1、栈
栈是一种先进先出的数据结构。并且只能对栈的两端进行操作,进栈或者出栈。splstack类通过使用一个双向链表来提供栈的主要功能。将出栈想象成遍历一个相反的数组的过程
$stack = new splstack(); $stack->push('张三<br>');//入栈 $stack->push('李四<br>'); $stack->unshift("王五");//将’王五‘放入栈底 echo $stack->pop();//出栈 李四 echo $stack->pop();//张三 echo $stack->pop();//王五
2、对列
队列是一种先进先出的数据结构。splqueue 类同样通过使用一个双向链表来提供队列的主要功能。
$queue = new splqueue(); $queue->enqueue(5);//入队列 $queue->enqueue(2); $queue->enqueue(1); $queue->enqueue(3); echo $queue->dequeue(); //出队列 5 echo $queue->dequeue(); //2 echo $queue->dequeue(); //1 echo $queue->dequeue(); //3
3、堆
堆就是为了实现优先队列而设计的一种数据结构,它是通过构造二叉堆实现。其中根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆,最大堆(splmaxheap)和最小堆(splminheap)都继承它实现的堆主要用于排序。
//最大堆 升序输出 $heap = new splmaxheap(); $heap->insert('e'); $heap->insert('b'); $heap->insert('d'); $heap->insert('a'); $heap->insert('c'); echo $heap->extract().'<br>'; # e echo $heap->extract().'<br>'; # d // 最小堆 降序输出 $heap = new splminheap(); $heap->insert('e'); $heap->insert('b'); $heap->insert('d'); $heap->insert('a'); $heap->insert('c'); echo $heap->extract().'<br>'; echo $heap->extract().'<br>';
最大堆:堆中每个父节点的元素值都大于等于其孩子结点(如果存在);
最小堆:堆中每个父节点的元素值都小于等于其孩子结点(如果存在);
4、固定数组
//固定数组 $i = 1000000; $fixbtime = microtime(true); $fixstart = memory_get_usage(); $fixarray = new splfixedarray($i);//生成长度为i的固定数组 $fixend = memory_get_usage(); $fixetime = microtime(true); //普通数组 $btime2 = microtime(true); $arr = array_fill(0, $i, null); $end = memory_get_usage(); //生成固定长度的固定数组和普通数组所用时间 echo $fixetime - $fixbtime, php_eol; //固定数组 0.0065009593963623 echo microtime(true) - $btime2, php_eol; //普通数组 0.1734619140625 //生成固定长度的固定数组和普通数组所占内存 echo $fixend - $fixstart, php_eol; //固定数组 4000280 byte echo $end - $fixend, php_eol; //普通数组 52194712 byte
在内存和时间方面,固定数组都比普通数组的消耗少了很多。但是对于固定数组来说,对内存的申请一步到位了,当内存不够时候会报错,当内存用不完时,也不会释放,只能浪费。同时,固定数组都是索引数组,不能使用除了整数以外的key。
下一篇: js验证小数或者数字