亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
Stack(Lifo - 最後,首先出局)
隊列(FIFO - 首先,首先)
集(僅唯一值)
選項1:使用in_array()使用值(簡單,但較慢)
選項2:使用鍵(推薦 - 更快)
方法摘要
首頁 後端開發(fā) php教程 使用本機(jī)PHP數(shù)組實現(xiàn)堆棧,隊列和集合

使用本機(jī)PHP數(shù)組實現(xiàn)堆棧,隊列和集合

Aug 03, 2025 pm 02:18 PM
PHP Arrays

PHP數(shù)組可以使用內(nèi)置函數(shù)實現(xiàn)堆棧,隊列和集合:1。對於堆棧(lifo),使用array_push()添加and array_pop()刪除,然後使用end($ stack)peek and empty()toement($ stack)to peek and empty(); 2。對於隊列(FIFO),請使用array_push()到eNqueue and array_shift()到Dequeue,儘管由於ReIndexing,Array_shift()為O(n); 3。對於集合,使用鍵通過$ set [$ value] = true,isset()檢查佔有率,然後刪除unset(),以實現(xiàn)操作的平均時間複雜性,使本機(jī)陣列有效地實現(xiàn)了,儘管性能警惕了大數(shù)據(jù)。

使用本機(jī)PHP數(shù)組實現(xiàn)堆棧,隊列和集合

PHP陣列用途廣泛,可以用作列表,詞典,堆棧,隊列,甚至以最小的努力設(shè)置。雖然PHP在SPL等擴(kuò)展中提供專用的數(shù)據(jù)結(jié)構(gòu),但對於許多用例,本機(jī)數(shù)組通常足夠。您可以僅使用本機(jī)PHP數(shù)組來實現(xiàn)堆棧,排隊集合。

使用本機(jī)PHP數(shù)組實現(xiàn)堆棧,隊列和集合

Stack(Lifo - 最後,首先出局)

堆棧遵循以下原則:添加的最後一個元素是刪除的第一個元素。 PHP提供了兩個內(nèi)置功能,理想的理想選擇: array_push()array_pop() 。

基本操作:

使用本機(jī)PHP數(shù)組實現(xiàn)堆棧,隊列和集合
  • push() - 在頂部添加一個元素
  • pop() - 刪除並返回頂部元素
  • peek() - 查看最高元素而不刪除它
  • isEmpty() - 檢查堆棧是否為空
$ stack = [];

//推送元素
array_push($ stack,'first');
array_push($ stack,'second');
array_push($ stack,'thix'); //堆棧頂部

//流行元素
$ top = array_pop($ stack); //返回“第三”

//窺視
$ peek =!空($ stack)? $ stack [count($ stack)-1]:null;

//檢查是否為空
$ isempty =空($ stack);

?提示:使用array_push($stack, $item)等於$stack[] = $item ,但是array_pop()是從末端刪除的最乾淨(jìng)的方法。


隊列(FIFO - 首先,首先)

隊列以添加的順序提供元素。要實現(xiàn)此目標(biāo),請?zhí)砑拥侥┒?,然後從前面刪除。

使用本機(jī)PHP數(shù)組實現(xiàn)堆棧,隊列和集合

使用:

  • array_push()到入口
  • array_shift()到Dequeue

基本操作:

  • enqueue() - 添加到後面
  • dequeue() - 從前面移開
  • isEmpty() - 檢查隊列是否為空
$ queue = [];

//入口元素
array_push($ queue,'first');
array_push($ queue,'second');
array_push($ queue,'thix');

// Dequeue元素
$ front = array_shift($ queue); //返回“第一個”

//檢查是否為空
$ isempty =空($ queue);

??注意: array_shift() reidindexes數(shù)組,這是O(n)操作。對於大型隊列,這可能是低效的。如果性能很重要,請考慮在反向數(shù)組(高級)上使用array_push()array_pop()使用SplQueue或管理array_push(),但在大多數(shù)情況下,這是可以接受的。


集(僅唯一值)

設(shè)置存儲獨特的值,無重複。 PHP數(shù)組不默認(rèn)地執(zhí)行唯一性,但是您可以通過使用o(1)查找的鍵使用諸如in_array()或更好的函數(shù)模擬集合。

選項1:使用in_array()使用值(簡單,但較慢)

 $ set = [];

函數(shù)setadd(&$ set,$ value){
    如果(!in_array($ value,$ set,true)){
        $ set [] = $ value;
    }
}

功能sethas($ set,$ value){
    返回in_array($ value,$ set,true);
}

// 用法
setadd($ set,'apple');
setadd($ set,“香蕉”);
setadd($ set,'apple'); //忽略

選項2:使用鍵(推薦 - 更快)

將值用作密鑰。這提供了近乎固有的查找和自動唯一性。

 $ set = [];

函數(shù)setadd(&$ set,$ value){
    $ set [$ value] = true; //或$ value本身
}

功能sethas($ set,$ value){
    返回isset($ set [$ value]);
}

功能setRemove(&$ set,$ value){
    unset($ set [$ value]);
}

功能setValues($ set){
    返回array_keys($ set);
}

// 用法
setadd($ set,'apple');
setadd($ set,“香蕉”);
setadd($ set,'apple'); //覆蓋,保持獨特

var_dump(sethas($ set,'蘋果')); // 真的
$ set = setValues($ set); //如果需要,獲取索引的值數(shù)組

?為何有效: PHP關(guān)聯(lián)陣列是哈希地圖。使用值作為鍵可為o(1)添加,檢查和刪除的平均時間複雜性。


方法摘要

結(jié)構(gòu) 添加 消除 窺視 獨特性
array_push array_pop end($arr)
隊列 array_push array_shift reset($arr)
手動檢查或關(guān)鍵分配 unset()array_diff N/A。 是的(手動執(zhí)行)

為了輕巧的應(yīng)用或?qū)W習(xí)目的,本機(jī)PHP陣列適用於堆棧,隊列和集合。只要注意性能含義,尤其是在大型陣列上的array_shift()in_array()中的大型集合。

對於使用大量使用的生產(chǎn)系統(tǒng),請考慮使用SPL數(shù)據(jù)結(jié)構(gòu)( SplStack , SplQueue , SplObjectStorage用於對象集),但是在許多情況下,Plain Arrays可以簡單地完成工作。

基本上,只要注意,PHP的本地陣列比最初出現(xiàn)的強(qiáng)大。

以上是使用本機(jī)PHP數(shù)組實現(xiàn)堆棧,隊列和集合的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
揭開Zend Hashtable:PHP陣列的核心引擎 揭開Zend Hashtable:PHP陣列的核心引擎 Aug 04, 2025 am 11:29 AM

TheZendHashTableisthecoredatastructurebehindPHParrays,enablingorderedkey-valuestoragewithefficientlookupsandtraversal;1)itusesbucketstostoreentrieswithsupportforbothstringandintegerkeys,2)maintainsinsertionorderviaadoubly-linkedlist,unliketypicalhash

利用現(xiàn)代PHP破壞陣列的力量 利用現(xiàn)代PHP破壞陣列的力量 Aug 04, 2025 pm 03:11 PM

數(shù)組解構(gòu)是PHP7.1及以上版本中通過list()或[]語法從數(shù)組中提取值並賦給變量的功能,1.可用於索引和關(guān)聯(lián)數(shù)組的值提取;2.支持跳過元素和設(shè)置默認(rèn)值以增強(qiáng)健壯性;3.適用於函數(shù)多返回值、遍歷鍵值對和變量交換等場景;4.需注意數(shù)組結(jié)構(gòu)匹配、避免過度解構(gòu)以保持可讀性;該特性提升了代碼簡潔性與可維護(hù)性,使PHP更貼近現(xiàn)代編程實踐。

PHP陣列內(nèi)部:了解抄寫和參考語義 PHP陣列內(nèi)部:了解抄寫和參考語義 Aug 02, 2025 pm 03:31 PM

PHP數(shù)組通過Copy-on-Write(寫時復(fù)制)機(jī)制實現(xiàn)高效內(nèi)存管理,即多個變量共享同一數(shù)組直到發(fā)生寫操作時才複製;1.賦值時僅增加zval的引用計數(shù),不立即復(fù)制數(shù)據(jù);2.當(dāng)修改數(shù)組且refcount>1時觸發(fā)複製;3.引用賦值(&)使變量共享zval,繞過COW機(jī)制;4.混合引用與普通變量可能導(dǎo)致隱式分離和性能開銷;5.函數(shù)傳參默認(rèn)按值傳遞但受COW保護(hù),只讀不復(fù)制;6.引用傳參可修改原數(shù)組;7.unset減少refcount,但引用存在時數(shù)組不釋放;因此,應(yīng)避免不必要的引用

使用本機(jī)PHP數(shù)組實現(xiàn)堆棧,隊列和集合 使用本機(jī)PHP數(shù)組實現(xiàn)堆棧,隊列和集合 Aug 03, 2025 pm 02:18 PM

phparrayscanimplementStacks,dequues和setsets-sing-sust-usearray_push()toaddandarray_pop()toremove ,lingend($ stack)topeekempty()toCheckEmptiness; 2. forquerues(fifo),usearray_push()toenqueueandarray_shift()todequeue,雖然

使用現(xiàn)代代碼庫中的PHP陣列實現(xiàn)類型安全 使用現(xiàn)代代碼庫中的PHP陣列實現(xiàn)類型安全 Aug 03, 2025 pm 01:41 PM

UsePHP’snativetypedeclarationsandPHPDocannotationstodefinearrayshapesandvaluetypes,enablingstaticanalyzerstoenforcestructure;2.Preferspecificarraytypeslikestring[]orarrayovergenericarraytocatchtypemismatchesearly;3.ReplacerawarrayswithValueObjectsorD

內(nèi)存管理攤牌:PHP陣列與大型數(shù)據(jù)集的生成器 內(nèi)存管理攤牌:PHP陣列與大型數(shù)據(jù)集的生成器 Aug 05, 2025 am 02:29 AM

生成to areTheBetterChohedlargedAtasetSinphpDuetotheirsuperiorMoryemoryfipicy.1.ArraysStoreAllealDatainMemoryatonce,領(lǐng)先的tohighMemoryusage-e.g

與傳播操作員優(yōu)雅地打開和合併陣列 與傳播操作員優(yōu)雅地打開和合併陣列 Aug 05, 2025 pm 02:16 PM

TheSpreadoperator(...)優(yōu)雅的雜物,例如[...水果,...蔬菜] CombinestWoArraysCleanly.2.ItenableSfearrayCloningBybyCreatingsHallowCopies,防止MuntimStotheoriginal,contotheoriginal,cocialforformialformploctional Programponming.3.itimplififififififieSimplififiesingArrayEllementementsa

導(dǎo)航迷宮:有效處理多維PHP陣列 導(dǎo)航迷宮:有效處理多維PHP陣列 Aug 05, 2025 pm 05:56 PM

要高效處理PHP多維數(shù)組,首先必須理解數(shù)據(jù)結(jié)構(gòu),再選擇合適的遍歷方式。 1.使用var_dump()或print_r()分析數(shù)組結(jié)構(gòu),判斷是否為樹形或混合類型,從而確定處理策略;2.對於深度未知的嵌套,採用遞歸函數(shù)遍歷並傳遞路徑鍵名,確保每個值的上下文信息不丟失;3.可謹(jǐn)慎使用array_walk_recursive()處理葉節(jié)點,但需注意其無法保留完整路徑且僅作用於標(biāo)量值;4.在適合場景下將數(shù)組展平為以點號分隔的單層結(jié)構(gòu),便於後續(xù)查找與操作;5.避免邊遍歷邊修改、忽略數(shù)據(jù)類型差異及過度嵌套等常見

See all articles