PHP之spl,用最简单的方式教你使用
一、什么是spl标准库呢?
引官方的一段解释:SPL是用于解决典型问题(standard problems)的一组接口与类的集合。
对许多phper来说,这个东西估计很多人并不熟悉,在平时的开发初级开发者并用不到,或者用到了也不知道。在重温数据结构的时候,我就在想,PHP有没有已经封装好的函数或方法可以直接使用队列,栈这些东西呢?好奇的我上网查询了一下,这世界上最好的语言确实名不虚传。确实有这些函数。它们被放在一个个封装类里,我们只需要实例化这些类,就可以调用相应的方法进行操作。
实际上,这是一个PHP拓展,大概类似于swoole吧,此拓展只能再PHP5.3后使用,并且现在已经内置到PHP内核中,说明我们不需开启相应配置即可使用。这里我主要重点说明关于数据结构的spl使用。
二、spl的常见四种数据结构的使用
2.1 栈的使用:
我们知道栈是一种后进先出的数据结构。并且只能对栈的两端进行操作,进栈或者出栈。SplStack类通过使用一个双向链表来提供栈的主要功能。简单的操作如下:
<?php $stack = new SplStack(); $stack->push(5); $stack->push(1); $stack->push(7); //在指定的原来索引后面插入数值,注意这里的索引是从7为0开始算的 $stack->add(1,3); echo $stack->pop();//7 echo $stack->pop();//1 echo $stack->pop();//3 echo $stack->pop();//5
更多详细使用:
2.2队列的使用
队列是一种先进先出的数据结构。
<?php $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
更多详细使用:
2.3 堆的使用:
<?php $heap = new SplMaxHeap(); # 最大堆 升序输出 $heap->insert(E); $heap->insert(B); $heap->insert(D); $heap->insert(A); $heap->insert(C); echo $heap->extract(), PHP_EOL; # E echo $heap->extract(), PHP_EOL; # D $heap = new SplMinHeap(); # 最小堆 降序输出 $heap->insert(E); $heap->insert(B); $heap->insert(D); $heap->insert(A); $heap->insert(C); print PHP_EOL; echo $heap->extract(), PHP_EOL; # A echo $heap->extract(), PHP_EOL; # B ?>
更多详细使用:
2.4 固定数组的使用
<?php //长度为10的固定数组 $array = new SplFixedArray(10); $array[1] = 2; $array[3] = you; $array[5] = are; $array[7] = the; $array[9] = best; var_dump($array); //拓展数组大小 $array->setSize(15); var_dump($array);
打印结果:
更多详细使用: