php中堆和棧的使用

來源:互聯網
上載者:User

這篇文章介紹的內容是關於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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.