この記事では主に、PHP のデータ構造である DS 拡張機能に関するありふれた話をお届けします。編集者はこれが非常に良いものだと思ったので、皆さんの参考として今から共有します。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。
このデータ構造拡張機能をインストールして使用するには、PHP 7 以降が必要です。インストールは比較的簡単です:
1. PHP に extension=ds.so を追加します。 .ini
3. PHP を再起動するか、設定を再ロードします
コレクション インターフェイス:このライブラリ内のすべてのデータ構造に共通の関数が含まれる基本インターフェイス。すべての構造が走査可能であり、カウント可能であり、json_encode() を使用して json に変換できることが保証されます。
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 ) }
ハッシュ可能なインターフェイス:
これにより、オブジェクトをキーとして使用できます。インターフェイス: シーケンスは、一次元の数値キー配列。ただし、いくつかの特性を除きます:
値には常に [0, 1, 2, …, size - 1] としてインデックスが付けられます。
インデックスによる値へのアクセスのみが許可されます。 [0, size - 1] の範囲内。
配列をリストとして使用する場合 (キーには関係ない)。
SplDoublyLinkedList および SplFixedArray のより効率的な代替手段。Vectorクラス:
ベクトルは、自動的に拡大および縮小する連続バッファ内の値のシーケンスです。これは最も効率的なシーケンシャル構造であり、値のインデックスはバッファ内のインデックスに直接マップされ、成長係数は特定の倍数や指数に束縛されません。これには次の利点と欠点があります:
配列構文 (角括弧) をサポートします。
同じ数の値に対して、割り当てられたメモリを自動的に解放します。
get()、set()、push()、pop()はすべてO(1)です。
ただし、shift()、unshift()、insert()およびRemove( ) はすべて O(n) です。
Ds\Hashable { /* 方法 */ abstract public bool equals ( object $obj ) abstract public mixed hash ( void ) }Deque クラス:
DsQueue でも使用される「double-ended queue」の略語には、先頭と末尾の 2 つのポインターがあります。ポインタはバッファの末尾を「ラップアラウンド」できるため、スペースを空けるために他の値を移動する必要がなくなり、シフトとシフト解除が非常に高速になります。これには、DsVector には次のような利点があります。欠点:
配列構文 (角かっこ) をサポートします。同じ数の値の配列よりも全体的なメモリの使用量が少なくなります。
サイズが十分に小さくなったら、割り当てられたメモリを自動的に解放します。
ただし、Capacity は 2 のべき乗である必要があります。insert() と Remove() は O(n) です。
Map クラス:
配列とほぼ同じ、キーと値のペアの連続したコレクション。キーは任意のタイプにすることができますが、一意である必要があります。同じキーでマップに追加された場合、値は置き換えられます。これには次の利点と欠点があります: キーと値はオブジェクトを含む任意の型にできます。配列構文 (角かっこ) をサポートします。挿入順序は保持されます。パフォーマンスとメモリ効率は非常に似ています。配列。サイズが十分に低くなると、割り当てられたメモリを自動的に解放します。
オブジェクトがキーとして使用されている場合は、配列に変換できません。
Pair クラス:
ペアは、DsMap によってペアリングに使用されます。値を持つキーDs\Vector::allocate — Allocates enough memory for a required capacity. Ds\Vector::apply — Updates all values by applying a callback function to each value. Ds\Vector::capacity — Returns the current capacity. Ds\Vector::clear — Removes all values. Ds\Vector::__construct — Creates a new instance. Ds\Vector::contains — Determines if the vector contains given values. Ds\Vector::copy — Returns a shallow copy of the vector. Ds\Vector::count — Returns the number of values in the collection. Ds\Vector::filter — Creates a new vector using a callable to determine which values to include. Ds\Vector::find — Attempts to find a value's index. Ds\Vector::first — Returns the first value in the vector. Ds\Vector::get — Returns the value at a given index. Ds\Vector::insert — Inserts values at a given index. Ds\Vector::isEmpty — Returns whether the vector is empty Ds\Vector::join — Joins all values together as a string. Ds\Vector::jsonSerialize — Returns a representation that can be converted to JSON. Ds\Vector::last — Returns the last value. Ds\Vector::map — Returns the result of applying a callback to each value. Ds\Vector::merge — Returns the result of adding all given values to the vector. Ds\Vector::pop — Removes and returns the last value. Ds\Vector::push — Adds values to the end of the vector. Ds\Vector::reduce — Reduces the vector to a single value using a callback function. Ds\Vector::remove — Removes and returns a value by index. Ds\Vector::reverse — Reverses the vector in-place. Ds\Vector::reversed — Returns a reversed copy. Ds\Vector::rotate — Rotates the vector by a given number of rotations. Ds\Vector::set — Updates a value at a given index. Ds\Vector::shift — Removes and returns the first value. Ds\Vector::slice — Returns a sub-vector of a given range. Ds\Vector::sort — Sorts the vector in-place. Ds\Vector::sorted — Returns a sorted copy. Ds\Vector::sum — Returns the sum of all values in the vector. Ds\Vector::toArray — Converts the vector to an array. Ds\Vector::unshift — Adds values to the front of the vector.
クラスを設定: 一意の値のシーケンス。この実装は DsMap と同じハッシュ テーブルを使用します。値はキーとして使用され、マップされた値は無視されます。
値はオブジェクトを含む任意の型にすることができます。構文 (角括弧)。挿入順序は保持されます。
サイズが十分に低下すると、割り当てられたメモリが自動的に解放されます。
ただしPush()、pop()、insert()、shift()、または unshift() はサポートされません。アクセスされたインデックスの前にバッファー内に削除された値がある場合、get() は O(n) になります。 1) それ以外の場合:
スタック クラス: 構造の最上部でのみアクセスと反復を許可する「後入れ先出し」コレクション。
Ds\Pair implements JsonSerializable { /* 方法 */ public __construct ([ mixed $key [, mixed $value ]] ) }
Queue クラス:
「先入れ先出し」コレクション。構造のフロントエンドでのアクセスと反復のみを許可します。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 ) }
PriorityQueue クラス: 優先キューはキューと非常によく似ていますが、値は指定された優先順位でキューにプッシュされ、最も高い優先順位を持つ値が常にキューの先頭に配置されます。同じ優先順位の要素」 「先入れ先出し」の順序は引き続き維持されます。 PriorityQueue の反復は破壊的であり、キューが空になるまで継続的にポップ操作を行うことと同等です。最大ヒープを使用して実装されます。
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 ) }
関連推奨事項:
PHP はスタック データ構造とブラケット マッチングを実装します
PHPスタックデータ構造とブラケットマッチングアルゴリズムを例付きで説明
以上がPHPのデータ構造:DS拡張機能の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、PHPでインターフェイスを作成、実装、および使用する方法について説明し、コード組織と保守性の利点に焦点を当てています。

この記事では、PHPのCrypt()とpassword_hash()の違いについて、パスワードハッシュの違いについて説明し、最新のWebアプリケーションの実装、セキュリティ、および適合性に焦点を当てています。

記事では、入力検証、出力エンコード、およびOWASP ESAPIやHTML浄化器などのツールを使用して、PHPのクロスサイトスクリプト(XSS)を防止します。

PHPでのオートローディングは、必要に応じてクラスファイルを自動的にロードし、メモリの使用を削減し、コード組織を強化することでパフォーマンスを向上させます。ベストプラクティスには、PSR-4の使用とコードを効果的に整理することが含まれます。

PHPストリームは、一貫したAPIを介したファイル、ネットワークソケット、圧縮形式などのリソースの処理を統合し、複雑さを抽象化し、コードの柔軟性と効率を高めます。

この記事では、PHPでファイルアップロードサイズの管理を管理し、2MBのデフォルト制限とPHP.ini設定を変更してそれを増やす方法に焦点を当てています。

この記事では、PHP 7.1で導入されたPHPのヌル可能なタイプについて説明し、変数またはパラメーターが指定されたタイプまたはnullのいずれかを可能にします。読みやすさの改善、タイプの安全性、明示的な意図などの利点を強調し、宣言する方法を説明します

この記事では、プログラミングのunset()とlink()関数の違いについて説明し、目的とユースケースに焦点を当てています。 unset()はメモリから変数を削除しますが、link()はファイルシステムからファイルを削除します。どちらもEFFECにとって重要です


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ホットトピック









