ホームページ >バックエンド開発 >PHPチュートリアル >PHP7.2 データ構造の使用
この記事では主に PHP7.2 データ構造の使用方法を紹介します。これは一定の参考価値があります。今、それをみんなに共有します。必要な友人はそれを参照してください。
pecl install ds
brew install homebrew/php/php71-ds
現在、PHP7.2 は brew を使用したインストールをサポートしていません。
Array
PHP5.x の時代では、Array
がコレクションを表す唯一のデータ型です。 PHP 、彼は List であり Map であり、すべてです。
<?php $a = array(1,2,3,4); $b = array('a'=>1,'b'=>2,'c'=>3);
このデータ型は開発者に利便性をもたらしますが、特に他の言語を学習する場合、PHPer がデータ構造の利点を無視できるようになります。
PHP が 7 にアップグレードされた後、Array
も最適化されましたが、その構造は変更されず、「すべてに最適化され、何も最適化されない」という改善の余地がありました。したがって、より便利なデータ構造を導入することでパフォーマンスを最適化し、同時にコードの記述もより便利になるのであれば、なぜそうしないのでしょうか?
「SPL データ構造についてはどうですか?」#PHP の配列は、存在しないキーにアクセスすると null を取得する可能性があり、致命的なエラーは発生しませんが、E_NOTICE が発生します。この E_NOTICE は、set_error_handler によって登録された関数によってインターセプトされます。明らかに、この種の汚れたコードと不要なパフォーマンスのオーバーヘッドは完全に回避できます。
残念ながら、それらはひどいものです。これらは PHP 7 より前にはいくつかの利点を提供していましたが、それ以降は実用的な価値がなくなるまで無視されてきました。設計と実装が非常に貧弱なので、新しいものに置き換えた方がよいでしょう。Array
「SPL データ構造の設計はひどいものです。」 - Anthony Ferrara
<?php $a = []; $a['a']; // PHP Notice: Undefined offset一般的な PHPer は array_key_exists を使用せず、それ以外の場合はそれを処理するため、少し面倒になります。
Github
: https://github.com/php-ds名前空間:
Ds\インターフェイス クラス:
Collection、Sequence、Hashable実装クラス (最終クラス):
Vector、Deque、Map、Set、Stack、Queue、PriorityQueue、Pair
インターフェイス クラス
Collection は、データ コレクションの基本操作を定義する基本インターフェイスです (ここでのコレクションとは、Set ではなく Collection を指します)。 foreach、echo、count、print_r、var_dump、serialize、json_encode、clone など。。
Hashable は、オブジェクトをキーとして使用できるようにするインターフェイスです。注: hashTable ではありません。 Hashable では、hash と equals の 2 つのメソッドのみが導入されます。 Hashable インターフェイスをサポートするデータ構造は Map と Set です。
Map 、キーと値のペアの連続コレクション。配列の使用と一致しており、キーはどのようなタイプでもかまいませんが、一意である必要があります。同じキーがマップに追加されると、元のキーが置き換えられます。配列と同様に、挿入順序も保持されます。
効率とメモリ使用量は Array とほぼ同じです
#Hashable を使用したインターフェイス
こちら明確にするために、Array の値自体にはインデックスがないため、
in_array()array_unique()
を使用できます。上記がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。 関連する推奨事項:
php で拡張 Redis と swoole をコンパイルしてインストールする方法
以上がPHP7.2 データ構造の使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。