国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP實現(xiàn)數(shù)據(jù)隊列

Airy / 1947人閱讀

摘要:參考地址隊列創(chuàng)建隊列元素將數(shù)據(jù)加入隊列隊列消費隊列的第一個元素隊列是否為空隊列大小

/**
 * Class Queue
 *
 * 參考地址:https://www.jianshu.com/p/ca1bb95ada76
 */
class Queue {

    /**
     * 隊列l(wèi)ist
     *
     * @var array
     */
    protected $items = [];

    /**
     * 創(chuàng)建隊列元素
     *
     * @param $element
     * @param $priority
     * @return array
     */
    public function queueElement($element, $priority) {
        return [
            "element" => $element,
            "priority" => $priority
        ];
    }

    /**
     * 將數(shù)據(jù)加入隊列
     *
     * @param $element
     * @param null $priority
     * @return array
     */
    public function enqueue($element, $priority = NULL) {

        $queueElement = $this->queueElement($element, $priority);

        if ($this->isEmpty() || $priority === NULL) {
            array_push($this->items, $queueElement);
        } else {
            $add = false;
            foreach ($this->items as $key => $value) {

                if ( $priority < $value["priority"] ) {
                    array_splice($this->items, $key, 0, [$queueElement]);
                    $add = true;
                    break;
                }
            }

            if (! $add) {
                array_push($this->items, $queueElement);
            }
        }

        return $queueElement;
    }

    /**
     * 隊列消費
     *
     * @return mixed
     */
    public function dequeue() {

        return array_shift($this->items);
    }

    /**
     * 隊列的第一個元素
     *
     * @return mixed
     */
    public function front() {
        return $this->items[0];
    }

    /**
     * 隊列是否為空
     *
     * @return bool
     */
    public function isEmpty() {
        return !!! count($this->items);
    }

    /**
     * 隊列items大小
     *
     * @return int
     */
    public function size() {
        return count($this->items);
    }
}

$queue = new Queue();

$queue->enqueue("abc", 10);
$queue->enqueue("def", 5);
$queue->enqueue("hig", 12);
$queue->enqueue("ijk", 3);

$size = $queue->size();

for ($i = 0; $i < $size; $i++) {
    $item = $queue->dequeue();
    print_r($item);
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/31597.html

相關(guān)文章

  • 自己實現(xiàn)異步執(zhí)行任務(wù)的隊列(二)

    摘要:六隊列具體實現(xiàn)三寫執(zhí)行隊列的程序根據(jù)設(shè)計,執(zhí)行隊列的程序文件是,它的主要功能是把任務(wù)從隊列表里取出來,并且在后臺執(zhí)行。八服務(wù)器部署一配置咱們執(zhí)行隊列的程序都寫好了,這個程序怎么觸發(fā)呢,當然就要用到的定時任務(wù),每隔一定的時間,執(zhí)行一次。 六、隊列具體實現(xiàn)三:寫執(zhí)行隊列的程序 根據(jù)設(shè)計,執(zhí)行隊列的程序文件是 do_queue.php , 它的主要功能是把任務(wù)從隊列表里取出來,并且在后臺執(zhí)行...

    zr_hebo 評論0 收藏0
  • Redis 實現(xiàn)隊列

    摘要:場景說明用于處理比較耗時的請求,例如批量發(fā)送郵件,如果直接在網(wǎng)頁觸發(fā)執(zhí)行發(fā)送,程序會出現(xiàn)超時高并發(fā)場景,當某個時刻請求瞬間增加時,可以把請求寫入到隊列,后臺在去處理這些請求搶購場景,先入先出的模式命令或往列表右側(cè)推入數(shù)據(jù)客戶端阻塞直到隊列有 場景說明: 用于處理比較耗時的請求,例如批量發(fā)送郵件,如果直接在網(wǎng)頁觸發(fā)執(zhí)行發(fā)送,程序會出現(xiàn)超時 高并發(fā)場景,當某個時刻請求瞬間增加時,可以把請...

    PascalXie 評論0 收藏0
  • Redis 實現(xiàn)隊列

    摘要:場景說明用于處理比較耗時的請求,例如批量發(fā)送郵件,如果直接在網(wǎng)頁觸發(fā)執(zhí)行發(fā)送,程序會出現(xiàn)超時高并發(fā)場景,當某個時刻請求瞬間增加時,可以把請求寫入到隊列,后臺在去處理這些請求搶購場景,先入先出的模式命令或往列表右側(cè)推入數(shù)據(jù)客戶端阻塞直到隊列有 場景說明: 用于處理比較耗時的請求,例如批量發(fā)送郵件,如果直接在網(wǎng)頁觸發(fā)執(zhí)行發(fā)送,程序會出現(xiàn)超時 高并發(fā)場景,當某個時刻請求瞬間增加時,可以把請...

    lifesimple 評論0 收藏0
  • Redis 實現(xiàn)隊列

    摘要:場景說明用于處理比較耗時的請求,例如批量發(fā)送郵件,如果直接在網(wǎng)頁觸發(fā)執(zhí)行發(fā)送,程序會出現(xiàn)超時高并發(fā)場景,當某個時刻請求瞬間增加時,可以把請求寫入到隊列,后臺在去處理這些請求搶購場景,先入先出的模式命令或往列表右側(cè)推入數(shù)據(jù)客戶端阻塞直到隊列有 場景說明: 用于處理比較耗時的請求,例如批量發(fā)送郵件,如果直接在網(wǎng)頁觸發(fā)執(zhí)行發(fā)送,程序會出現(xiàn)超時 高并發(fā)場景,當某個時刻請求瞬間增加時,可以把請...

    LoftySoul 評論0 收藏0
  • 實戰(zhàn)PHP數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)之隊列

    摘要:環(huán)形隊列為充分利用向量空間,克服假溢出現(xiàn)象的方法是將向量空間想象為一個首尾相接的圓環(huán),并稱這種向量為循環(huán)向量。雙端隊列截止目前我們所實現(xiàn)的隊列都是在隊尾入隊,隊首出隊的結(jié)構(gòu)。 什么是隊列 隊列是另外一種遵循先進先出原則的線性數(shù)據(jù)結(jié)構(gòu)。隊列有兩端可供操作,一端出隊,一端入隊。這個特點和棧不同,棧只有一端可以用來操作。入隊總是在后端,出隊在前端。 常見操作 enqueue -> 入隊 d...

    cnio 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<