php中堆和栈的使用
这篇文章介绍的内容是关于php中堆和栈的使用,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
一、关于堆和栈的概念及区别
这里参考上篇博客: 浅谈堆和栈的区别
通过这篇文章,我们可以知道广义的堆和栈到底是什么,但是具体在php中的使用呢
二、php中的堆栈
众所周知,PHP提供了一组函数可以用于push与pop(堆栈)还有shift与unshift(队列)来操作数组元素。
1、push与pop
这两个函数操作的是栈,遵循先进后出的原则。就像是往木桶里面加东西一样。通过array_push进行入栈操作,array_pop进行出栈操作。先进栈的部分在木桶的最下面。
(1)array_push()方法
array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。该函数等于多次调用 $array[] = $value。
(2)array_pop()方法
array_pop() 函数删除数组中的最后一个元素。 返回数组的最后一个值。如果数组是空的,或者非数组,将返回 NULL。
(3)实例:
<?php $arr = array(); array_push($arr,'aaa'); //先入栈 aaa array_push($arr,'bbb'); //后入栈 bbb print_r($arr); //此时打印结果为:[0]=>aaa,[1]=>bbb $arr.pop(); //进行出栈操作,先进后出原则,则此时相当于bbb出栈了。 print_r($arr); //打印结果应该是[0]=>aaa?>
三、php实现的队列
1、什么是队列
首先应该明确,队列和普通的堆栈是不一样的,队列遵循的是“先进先出”。堆栈只能在栈顶删除和插入。队列是每一个新插入的元素都是在队列的尾部插入,每一个要删除的元素都是位于队列的头部,当从队列的头部删除了一个元素后,其它队列中的元素就会向前进1位,在元素移动到队首时,就会接受出队的操作。
队列模型可以理解为排队吃饭。先排队的人就先吃到饭。
2、队列的操作
php中使用array_push()来增加元素,使用array_shift()删除元素。
(1)array_shift()方法
array_shift() 函数删除数组中第一个元素,并返回被删除元素的值。 如果键名是数字的,所有元素都会获得新的键名,从 0 开始,并以 1 递增
具体参考手册:http://www.w3school.com.cn/php/func_array_shift.asp
(2)实例:
<?php $arr = array(); array_push($arr,'aaa'); //队列中添加 aaa array_push($arr,'bbb'); // 队列中添加 bbb print_r($arr); //此时打印输出为 [0]=>aaa,[1]=>bbb array_shift($arr); //删除第一个元素,遵循先进先出原则,删除的是aaa print_r($arr); //打印结果为 [0]=>bbb?>
(3)双端队列
还有一种队列比较特殊,首尾两端都允许进行插入和删除的操作,这种队列可以称为双端队列,与标准的队列不同的就是多了队首的插入操作和队尾的删除操作。一般是通过php的数组函数:array_unshift()和array_shift()。
具体参考:PHP队列原理及基于队列的写文件案例
四、队列的用途
队列可以很好地异步处理数据传送和存储,当你频繁地向数据库中插入数据、频繁地向搜索引擎提交数据,就可采取队列来异步插入。另外,还可以将较慢的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理,例如FLV视频转换、发送手机短信、发送电子邮件等。
end
相关推荐:
以上就是php中堆和栈的使用的详细内容,更多请关注其它相关文章!