DS扩展包路径:【DS扩展包路径】:https://pecl.php.net/package/dsCentOS7DS扩展安装(使用phpize)>phpize>./configure--with-php-config=/php/bin/php-config>make&&makeinstallDS扩展功能介绍:DS扩展是PHP7的一种高效数据结构,可以作为数组的替代。栈:栈是后进先出(lastinfirstout)或后进先出(LIFO)的集合,它只允许访问结构顶部的值,并按该顺序迭代.分配(16);//查看堆栈print_r($stack);/*输出内容Ds\StackObject([0]=>13[1]=>12[2]=>11)*///获取当前容量大小,如果入栈数据的实际容量大于allocate()设置的容量,返回实际容量;如果实际容量小于allocate()设置的容量,则返回设置的容量;如果上面设置为16,则返回16;如果没有设置则返回8print_r($stack->capacity());//清除堆栈print_r($stack->clear());/*输出内容Ds\StackObject()*///栈到数组print_r($stack->toArray());/*输出数组:Array([0]=>13[1]=>12[2]=>11)*///push方法参数格式$stack->push(14);$堆栈->推(14,15);$堆栈->推([14,15]);$列表=[11,12,13];$stack=new\Ds\Stack($list);print_r($stack->count());//得到总栈输出:3栈复制修改栈变化比较13[1]=>12[2]=>11)*/$stack_copy=$stack->copy();print_r($stack_copy);/*复制输出内容:Ds\StackObject([0]=>13[1]=>12[2]=>11)*///原栈入栈数据$stack->push(14);/*原始堆栈输出数据:Ds\StackObject([0]=>14[1]=>13[2]=>12[3]=>11)复制堆栈输出数据:Ds\StackObject([0]=>13[1]=>12[2]=>11)*///重复栈压入数据$stack->push(15);/*原始栈输出数据:Ds\StackObject([0]=>14[1]=>13[2]=>12[3]=>11)复制栈输出数据:Ds\StackObject([0]=>15[1]=>13[2]=>12[3]=>11)*/比较栈是否为空isEmpty());//输出:bool(false)var_dump($stack1->isEmpty());//输出:bool(true)//清除清空堆栈$stack->clear();//压栈1$stack1->push(14);var_dump($stack->isEmpty());//输出:bool(true)var_dump($stack1->isEmpty());//输出:bool(false)数据栈比较13[1]=>12[2]=>11)*///peek方法只返回栈顶数据,不返回出栈数据print_r($stack->peek());//输出:13print_r($stack);/*调用peek后输出数据:Ds\StackObject([0]=>13[1]=>12[2]=>11)*//pop方法返回栈顶数据并弹出print_r($stack->pop());//输出:13print_r($stack);/*调用pop后输出数据:Ds\StackObject([0]=>12[1]=>11)*/队列:队列是一个先进先出或FIFO的集合,只允许访问队列前面的值,并按该顺序迭代capacity();//返回当前容量:8//设置队列内存大小$queue->allocate(31);$queue->capacity();//设置后返回当前容量:32//设置队列内存大小$queue->allocate(33);$queue->capacity();//返回设置Currentcapacity:64//容量capacity总是四舍五入到最接近的2的幂。print_r($queue->count());//获取队列长度输出:3队列为空,判断为空比较isEmpty());//输出:bool(false)var_dump($queue1->isEmpty());//输出:bool(true)$queue->clear();$queue1->推送(14);var_dump($queue->isEmpty());//Output:bool(true)var_dump($queue1->isEmpty());//Output:bool(false)队列复制修改栈变化比较copy();打印_r($队列);/*初始化输出队列:Ds\QueueObject([0]=>11[1]=>12[2]=>13)*/print_r($queue_copy);/*复制输出队列:Ds\QueueObject([0]=>11[1]=>12[2]=>13)*///原队列入队数据$queue->push(14);/*原始队列输出队列:Ds\QueueObject([0]=>11[1]=>12[2]=>13[3]=>14)复制输出队列:Ds\QueueObject([0]=>11[1]=>12[2]=>13)*///复制复制队列入队数据$queue_copy->push(15);/*原始队列输出队列:Ds\QueueObject([0]=>11[1]=>12[2]=>13)重复输出队列:Ds\QueueObject([0]=>11[1]=>12[2]=>13[3]=>15)*/Queue出队数据比较peek());//Output:11print_r($queue);/*原始队列输出Queue:Ds\QueueObject([0]=>11[1]=>12[2]=>13)*///方法pop只返回队列头部的数据,而打印队列print_r($queue->pop());//Output:11print_r($queue);/*原始队列输出队列:Ds\QueueObject([0]=>12[1]=>13)*/队列和栈入队数据的比较推送(11);$队列->推送(12,13)??;$queue->push([14,15]);打印_r($队列);$stack=new\Ds\Stack();$堆栈->推(11);$堆栈->推(12,13)??;$堆栈->推([14,15]);打印_r($堆栈);//输出数据//队列数据:Ds\QueueObject([0]=>11[1]=>12[2]=>13[3]=>Array([a]=>14[b]=>15)[4]=>Array([0]=>16[1]=>17))//堆栈数据:Ds\StackObject([0]=>Array([0]=>16[1]=>17)[1]=>Array([a]=>14[b]=>15)[2]=>13[3]=>12[4]=>11)/*结果:1.第一个入队在队头,先进先出2.入栈在队尾,出队后入队第一个out*/
