PHP資料的DS擴充
PHP7以上才能安裝並使用該資料結構擴展,安裝比較簡單:
1. 运行命令 pecl install ds 2. 在php.ini中添加 extension=ds.so 3. 重启PHP或重载配置
-
-
Collection Interface:包含本函式庫中所有資料結構通用功能的基本interface。 It guarantees that all structures are traversable, countable, and can be converted to json using json_encode().
#
##Ds\Collection implements Traversable , Countable , JsonSerializable {/* 方法 */abstract public void clear ( void )abstract public Ds\Collection copy ( void )abstract public bool isEmpty ( void )abstract public array toArray ( void ) }
登入後複製 -
#
##'
##Hashable Interface - :
which allows objects to be used as keys.
Ds\Hashable {/* 方法 */abstract public bool equals ( object $obj )abstract public mixed hash ( void ) }
登入後複製 -
- Sequence Interface
:A Sequence 相當於一個一維的數字key陣列, with the exception of a few characteristics:
-
Use cases:
- ##Wherever you would use an array as a list (not concerned with keys).
A more efficient alternative to SplDoublyLinkedList and SplFixedArray. ######Values will always be indexed as [0, 1, 2, …, size - 1].###################Only allowed to access 值by index in the range [0, size - 1].##############################Vector Class###:Vector是自動增長和收縮的連續緩衝區中的一系列值。它是最有效的順序結構,值的索引直接映射到緩衝區中索引,增長因子不綁定到特定的倍數或指數。其有下列優缺點:######### ######
###Ds\Vector::allocate — Allocates enough memory a required capacity.::apply — Updates all values by applying a to value.::capacity — Returns the capacity.::clear — Removes all values.::__construct — Creates a instance.::contains — Determines the vector contains given values.:: — Returns a shallow of the vector.:: — Returns the of values in the collection.::filter — Creates a vector using a callable to determine which values to .::find — Attempts to find a value'
登入後複製 Supports array syntax (square brackets).
Uses less overall memory than an array for the same number of values.
Automatically frees allocated memory when its size drops low enough.
Capacity does not have to be a power of 2.
get(), set(), push(), pop() are all O(1).
但是 shift(), unshift(), insert() and remove() are all O(n).
Deque Class:“双端队列”的缩写,也用于Ds\Queue中,拥有head、tail两个指针。The pointers can “wrap around” the end of the buffer, which avoids the need to move other values around to make room. This makes shift and unshift very fast — something a Ds\Vector can’t compete with. 其具有以下优缺点:
Supports array syntax (square brackets).
Uses less overall memory than an array for the same number of values.
Automatically frees allocated memory when its size drops low enough.
get(), set(), push(), pop(), shift(), and unshift() are all O(1).
但Capacity must be a power of 2.insert() and remove() are O(n).
Map Class:键值对的连续集合,几乎与数组相同。键可以是任何类型,但必须是唯一的。如果使用相同的键添加到map中,则将替换值。其拥有以下优缺点:
Keys and values can be any type, including objects.
Supports array syntax (square brackets).
Insertion order is preserved.
Performance and memory efficiency is very similar to an array.
Automatically frees allocated memory when its size drops low enough.
Can’t be converted to an array when objects are used as keys.
-
Pair Class:A pair is used by Ds\Map to pair keys with values.
Ds\Pair implements JsonSerializable {/* 方法 */public __construct ([ mixed $key [, mixed $value ]] ) }
登入後複製 Set Class:唯一值序列。 This implementation uses the same hash table as Ds\Map, where values are used as keys and the mapped value is ignored.其拥有以下优缺点:
Values can be any type, including objects.
Supports array syntax (square brackets).
Insertion order is preserved.
Automatically frees allocated memory when its size drops low enough.
add(), remove() and contains() are all O(1).
但Doesn’t support push(), pop(), insert(), shift(), or unshift(). get() is O(n) if there are deleted values in the buffer before the accessed index, O(1) otherwise.
-
Stack Class: “last in, first out”集合,只允许在结构顶部进行访问和迭代。
Ds\Stack implements Ds\Collection {/* 方法 */public void allocate ( int $capacity )public int capacity ( void )public void clear ( void )public Ds\Stack copy ( void )public bool isEmpty ( void )public mixed peek ( void )public mixed pop ( void )public void push ([ mixed $...values ] )public array toArray ( void ) }
登入後複製 -
Queue Class:“first in, first out”集合,只允许在结构前端进行访问和迭代。
Ds\Queue implements Ds\Collection {/* Constants */const int MIN_CAPACITY = 8 ;/* 方法 */public void allocate ( int $capacity )public int capacity ( void )public void clear ( void )public Ds\Queue copy ( void )public bool isEmpty ( void )public mixed peek ( void )public mixed pop ( void )public void push ([ mixed $...values ] )public array toArray ( void ) }
登入後複製 -
PriorityQueue Class:优先级队列与队列是非常相似的,但值以指定的优先级被推入队列,优先级最高的值总是位于队列的前面,同优先级元素“先入先出”顺序任然保留。在一个PriorityQueue上递代是具有破坏性的,相当于连续弹出操作直到队列为空。Implemented using a max heap.
Ds\PriorityQueue implements Ds\Collection {/* Constants */const int MIN_CAPACITY = 8 ;/* 方法 */public void allocate ( int $capacity )public int capacity ( void )public void clear ( void )public Ds\PriorityQueue copy ( void )public bool isEmpty ( void )public mixed peek ( void )public mixed pop ( void )public void push ( mixed $value , int $priority )public array toArray ( void ) }
登入後複製
以上是PHP資料的DS擴充的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。
