Da Arrays in PHP zu leistungsstark sind, sind diese Datenstrukturen enthalten. Daher besteht keine Notwendigkeit, auf diese Datenstrukturen zu achten, und diese Konzepte werden mit der Zeit verblassen. In PHP gibt es eine Erweiterung namens Data Structures, die diese allgemeinen Datenstrukturen enthält. Lassen Sie es uns heute vorstellen.
Da Arrays zu leistungsfähig sind, sind diese Datenstrukturen enthalten, sodass diese Datenstrukturen im Laufe der Zeit nicht mehr berücksichtigt werden müssen Datenstrukturen in PHP.
Es gibt eine Erweiterung „Data Structures“ in PHP, die diese gängigen Datenstrukturen enthält.
Priority QueuePriorityQueue
Double-Ended Queue Deque
Queue FIFO (First In First Out)
Stack LIFO (First In Last Out)
Hash-Tabelle Hash
PriorityQueue ist Queue sehr ähnlich. Werte werden mit der angegebenen Priorität in die Warteschlange verschoben, und der Wert mit der höchsten Priorität steht immer an der Spitze der Warteschlange.
Hinweis
Bei Werten mit gleicher Priorität bleibt die Reihenfolge „First in, first out“ erhalten.
Das Durchlaufen einer PriorityQueue ist destruktiv und entspricht kontinuierlichen Pop-Operationen, bis die Warteschlange leer ist.
Die Standardkapazität beträgt 8, Sie können die Kapazität manuell festlegen. Diese Kapazität bezieht sich nicht auf die Länge der Warteschlange, sondern auf den Speicherplatz. Stellen Sie sicher, dass bei der Neuzuweisung der Kapazität genügend Speicher vorhanden ist.
Wenn der Wert kleiner oder gleich der aktuellen Kapazität ist, bleibt die Kapazität unverändert.
$queue = new Ds\PriorityQueue(); $queue->allocate(8);
Wenn die Kapazität derzeit manuell eingestellt wird und die eingestellte Kapazität größer als die tatsächlich belegte Kapazität ist, wird die eingestellte Kapazität zurückgegeben. Andernfalls wird die tatsächliche Kapazität zurückgegeben.
$queue = new Ds\PriorityQueue(); // 此时返回默认值 8 $queue->capacity();
Je größer der Wert, desto höher die Priorität
$queue = new Ds\PriorityQueue(); $queue->push('value1', 1); $queue->push('value2', 2);
$queue = new Ds\PriorityQueue(); $queue->push('沙僧', 2); $queue->push('唐僧', 5); $queue->push('白龙马', 1); $queue->push('猪八戒', 3); $queue->push('孙悟空', 4); $cout = $queue->count(); for($i=0; $i<$cout; $i++) { echo $queue->pop(); echo PHP_EOL; }
唐僧 孙悟空 猪八戒 沙僧 白龙马
MySQL Um die Abfrage zu beschleunigen und eine Sortierung zu vermeiden, kann der Index nicht verwendet werden und es wird keine Sortierung durchgeführt. Führen Sie eine manuelle Sortierung auf Servercodeebene durch und kehren Sie dann zurück.
Andere Anwendungsszenarien...
hat zwei Zeiger, die jeweils auf den Kopf und den Schwanz zeigen. Das Einführen und Auswerfen kann jeweils am Kopf und am Schwanz erfolgen.
Unterstützt Array-Syntax (eckige Klammern).
Beanspruchen Sie bei gleicher Anzahl an Werten weniger Speicher als ein Array.
Zugewiesenen Speicher automatisch freigeben, wenn seine Größe niedrig genug ist.
get(), set(), push(), pop(), shift() und unshift() sind alle O(1).
Der eingestellte Kapazitätswert muss eine Zweierpotenz sein und der Standardwert ist 8. Beispielsweise sind 2^2
insert() und remove() O(n). Beschreibung der Klassenmethode
$deque = new Ds\Deque(); $deque->push(...['唐僧', '孙悟空', '猪八戒', '沙僧', '白龙马']); $clone = $deque->copy(); $count = $deque->count(); echo '头:'.$deque->first().PHP_EOL; echo '尾:'.$deque->last().PHP_EOL; echo '--- 从队尾开始 ----'.PHP_EOL; for($i=0; $i<$count; $i++) { echo $deque->pop(); echo PHP_EOL; } echo '--- 从队头开始 ----'.PHP_EOL; for($i=0; $i<$count; $i++) { echo $clone->shift(); echo PHP_EOL; }
Ausgabe
头:唐僧 尾:白龙马 --- 从队尾开始 ---- 白龙马 沙僧 猪八戒 孙悟空 唐僧 --- 从队头开始 ---- 唐僧 孙悟空 猪八戒 沙僧 白龙马
$queue = new Ds\Queue(); $queue->push('唐僧'); $queue->push(...['孙悟空', '猪八戒']); $queue->push(['沙僧', '白龙马']); print_r($queue);
Ds\Queue Object ( [0] => 唐僧 [1] => 孙悟空 [2] => 猪八戒 [3] => Array ( [0] => 沙僧 [1] => 白龙马 ) )
Vorteile
Unterstützt Array-Syntax.
Leistung und Speichereffizienz ähneln Daten.
Set Set
Vorteile
Werte können beliebiger Art sein, auch Objekte.
Zugewiesenen Speicher automatisch freigeben, wenn die Größe niedrig genug ist.
Empfohlenes Lernen: php-Video-Tutorial
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Data Structures-Erweiterung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!