この記事では主に、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 サイトの他の関連記事を参照してください。

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra

toretrievedatafrompsession、Startthessession withsession_start()andAccessvariablesshe $ _SessionArray.forexample:1)Startthessession:session_start()

セッションを使用して効率的なショッピングカートシステムを構築する手順には、次のものがあります。1)セッションの定義と機能を理解します。セッションは、リクエスト全体でユーザーのステータスを維持するために使用されるサーバー側のストレージメカニズムです。 2)ショッピングカートに製品を追加するなど、基本的なセッション管理を実装します。 3)製品の量管理と削除をサポートし、高度な使用状況に拡大します。 4)セッションデータを持続し、安全なセッション識別子を使用することにより、パフォーマンスとセキュリティを最適化します。

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ホットトピック









