经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
PHP的SPL标准库
来源:cnblogs  作者:凌晨两点半12138  时间:2019/9/29 9:07:01  对本文有异议

1,简介

  SPL,全称 Standard PHP Library 中文是 标准PHP类库。是php内置的一些拓展类和拓展接口,其内容包含数据结构、迭代器、接口、异常、SPL函数,文件处理等内容。SPL拓展只能用于PHP5.3版本及以后,并且不需要进行额外的配置,可以直接使用。详细信息可以进入PHP官方网站 https://www.php.net/spl查看。 这里主要说明SPL中的数据结构内容的使用。

2,使用

1、栈

  栈是一种先进先出的数据结构。并且只能对栈的两端进行操作,进栈或者出栈。SplStack类通过使用一个双向链表来提供栈的主要功能。将出栈想象成遍历一个相反的数组的过程

  1. $stack = new SplStack();
  2. $stack->push('张三<br>');//入栈
  3. $stack->push('李四<br>');
  4. $stack->unshift("王五");//将’王五‘放入栈底
  5. echo $stack->pop();//出栈 李四
  6. echo $stack->pop();//张三
  7. echo $stack->pop();//王五
View Code

2、对列

  队列是一种先进先出的数据结构。SplQueue 类同样通过使用一个双向链表来提供队列的主要功能。

  1. $queue = new splQueue();
  2. $queue->enqueue(5);//入队列
  3. $queue->enqueue(2);
  4. $queue->enqueue(1);
  5. $queue->enqueue(3);
  6. echo $queue->dequeue(); //出队列 5
  7. echo $queue->dequeue(); //2
  8. echo $queue->dequeue(); //1
  9. echo $queue->dequeue(); //3
View Code

3、堆

  堆就是为了实现优先队列而设计的一种数据结构,它是通过构造二叉堆实现。其中根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆,最大堆(SplMaxHeap)和最小堆(SplMinHeap)都继承它实现的堆主要用于排序。

  1. //最大堆 升序输出
  2. $heap = new SplMaxHeap();
  3. $heap->insert('E');
  4. $heap->insert('B');
  5. $heap->insert('D');
  6. $heap->insert('A');
  7. $heap->insert('C');
  8. echo $heap->extract().'<br>'; # E
  9. echo $heap->extract().'<br>'; # D
  10. // 最小堆 降序输出
  11. $heap = new SplMinHeap();
  12. $heap->insert('E');
  13. $heap->insert('B');
  14. $heap->insert('D');
  15. $heap->insert('A');
  16. $heap->insert('C');
  17. echo $heap->extract().'<br>';
  18. echo $heap->extract().'<br>';
View Code

最大堆:堆中每个父节点的元素值都大于等于其孩子结点(如果存在);

最小堆:堆中每个父节点的元素值都小于等于其孩子结点(如果存在);

4、固定数组

  1. //固定数组
  2. $i = 1000000;
  3. $fixbtime = microtime(true);
  4. $fixstart = memory_get_usage();
  5. $fixArray = new SplFixedArray($i);//生成长度为i的固定数组
  6. $fixend = memory_get_usage();
  7. $fixetime = microtime(true);
  8. //普通数组
  9. $btime2 = microtime(true);
  10. $arr = array_fill(0, $i, null);
  11. $end = memory_get_usage();
  12. //生成固定长度的固定数组和普通数组所用时间
  13. echo $fixetime - $fixbtime, PHP_EOL; //固定数组 0.0065009593963623
  14. echo microtime(true) - $btime2, PHP_EOL; //普通数组 0.1734619140625
  15. //生成固定长度的固定数组和普通数组所占内存
  16. echo $fixend - $fixstart, PHP_EOL; //固定数组 4000280 byte
  17. echo $end - $fixend, PHP_EOL; //普通数组 52194712 byte
View Code

  在内存和时间方面,固定数组都比普通数组的消耗少了很多。但是对于固定数组来说,对内存的申请一步到位了,当内存不够时候会报错,当内存用不完时,也不会释放,只能浪费。同时,固定数组都是索引数组,不能使用除了整数以外的key。

 

原文链接:http://www.cnblogs.com/huangzikai/p/11602547.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号