中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

php隊(duì)列處理數(shù)據(jù) php棧與隊(duì)列的區(qū)別

php數(shù)組如何實(shí)現(xiàn)循環(huán)隊(duì)列

1.PHP基本上就是一種數(shù)組語(yǔ)言。時(shí)常要進(jìn)行大量的數(shù)組循環(huán)操作,主要有兩種方式,

成都網(wǎng)站建設(shè)、成都做網(wǎng)站的關(guān)注點(diǎn)不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒(méi)有做好網(wǎng)站,給創(chuàng)新互聯(lián)一個(gè)展示的機(jī)會(huì)來(lái)證明自己,這并不會(huì)花費(fèi)您太多時(shí)間,或許會(huì)給您帶來(lái)新的靈感和驚喜。面向用戶友好,注重用戶體驗(yàn),一切以用戶為中心。

一種是foreach,另一種是while,

代碼如下:

foreach ($array as $value) {

echo $value;

}

while (list($key) = each($array)) {

echo $array[$key];

}

foreach ($array as $value) {

echo $value;

}

while (list($key) = each($array)) {

echo $array[$key];

}

2.在循環(huán)里進(jìn)行的是數(shù)組“寫”操作,則while比f(wàn)oreach快:

foreach ($array as $key = $value) {

echo $array[$key] = $value . '...';

}

while (list($key) = each($array)) {

$array[$key] = $array[$key] . '...';

}

foreach ($array as $key = $value) {

echo $array[$key] = $value . '...';

}

while (list($key) = each($array)) {

$array[$key] = $array[$key] . '...';

}

PHP 數(shù)據(jù)結(jié)構(gòu)隊(duì)列(SplQueue)和優(yōu)先隊(duì)列(SplPriorityQueue)簡(jiǎn)單使用實(shí)例

隊(duì)列這種數(shù)據(jù)結(jié)構(gòu)更簡(jiǎn)單,就像我們生活中排隊(duì)一樣,它的特性是先進(jìn)先出(FIFO)。

PHP

SPL中SplQueue類就是實(shí)現(xiàn)隊(duì)列操作,和棧一樣,它也可以繼承雙鏈表(SplDoublyLinkedList)輕松實(shí)現(xiàn)。

SplQueue類摘要如下:

SplQueue簡(jiǎn)單使用如下:

復(fù)制代碼

代碼如下:

$queue

=

new

SplQueue();

/**

*

可見隊(duì)列和雙鏈表的區(qū)別就是IteratorMode改變了而已,棧的IteratorMode只能為:

*

(1)SplDoublyLinkedList::IT_MODE_FIFO

|

SplDoublyLinkedList::IT_MODE_KEEP

(默認(rèn)值,迭代后數(shù)據(jù)保存)

*

(2)SplDoublyLinkedList::IT_MODE_FIFO

|

SplDoublyLinkedList::IT_MODE_DELETE

(迭代后數(shù)據(jù)刪除)

*/

$queue-setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO

|

SplDoublyLinkedList::IT_MODE_DELETE);

//SplQueue::enqueue()其實(shí)就是

SplDoublyLinkedList::push()

$queue-enqueue('a');

$queue-enqueue('b');

$queue-enqueue('c');

//SplQueue::dequeue()其實(shí)就是

SplDoublyLinkedList::shift()

print_r($queue-dequeue());

foreach($queue

as

$item)

{

echo

$item

.

PHP_EOL;

}

print_r($queue);

而優(yōu)先隊(duì)列SplPriorityQueue是基于堆(后文介紹)實(shí)現(xiàn)的。

SplPriorityQueue的類摘要如下:

SplPriorityQueue簡(jiǎn)單使用:

$pq

=

new

SplPriorityQueue();

$pq-insert('a',

10);

$pq-insert('b',

1);

$pq-insert('c',

8);

echo

$pq-count()

.PHP_EOL;

//3

echo

$pq-current()

.

PHP_EOL;

//a

/**

*

設(shè)置元素出隊(duì)模式

*

SplPriorityQueue::EXTR_DATA

僅提取值

*

SplPriorityQueue::EXTR_PRIORITY

僅提取優(yōu)先級(jí)

*

SplPriorityQueue::EXTR_BOTH

提取數(shù)組包含值和優(yōu)先級(jí)

*/

$pq-setExtractFlags(SplPriorityQueue::EXTR_DATA);

while($pq-valid())

{

print_r($pq-current());

//a

c

b

$pq-next();

}

php怎么使用隊(duì)列來(lái)處理批量采集

首先,隊(duì)列的作用不是批量處理,而是延時(shí)處理,也叫異步處理

要做批量采集的話,首先你要?jiǎng)澐趾脜^(qū)間,可以用php的多進(jìn)程,也可以用php的cli模式做,只要數(shù)據(jù)不竄就行

PHP SplQueue 隊(duì)列用法

在PHP中,我們可以用array來(lái)簡(jiǎn)單模擬隊(duì)列的功能,array_push出列,array_pop入列,但是更高效的用法還是要使用SplQueue這個(gè)官方提供的隊(duì)列類來(lái)做,記錄一下簡(jiǎn)單的用法。

我們注意到,SplQueue中還有push和pop方法,它們與enqueue和dequeue有什么區(qū)別呢?

push和enqueue沒(méi)有區(qū)別,但是pop等同于棧的pop(FILO),每次彈出最后壓入隊(duì)列的元素。

而隊(duì)列是先進(jìn)先出(FIFO)的,所以每次彈出的都是剩下的節(jié)點(diǎn)中先入列節(jié)點(diǎn)

以上是PHP隊(duì)列的簡(jiǎn)單用法,下面是一些迭代器指針相關(guān)的操作

文章標(biāo)題:php隊(duì)列處理數(shù)據(jù) php棧與隊(duì)列的區(qū)別
URL網(wǎng)址:http://www.rwnh.cn/article24/ddoshje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、用戶體驗(yàn)網(wǎng)頁(yè)設(shè)計(jì)公司、微信公眾號(hào)、、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管
囊谦县| 观塘区| 大安市| 金门县| 尼勒克县| 宜章县| 门源| 肃南| 文水县| 东丽区| 卢湾区| 金秀| 乌鲁木齐市| 政和县| 红河县| 靖江市| 萍乡市| 武威市| 南城县| 通江县| 渑池县| 梅河口市| 徐汇区| 新宁县| 汤阴县| 平遥县| 安福县| 那曲县| 洱源县| 册亨县| 平谷区| 株洲市| 鄢陵县| 屯昌县| 岳西县| 邯郸市| 霸州市| 哈尔滨市| 南召县| 孟村| 武城县|