array
関連する配列機能が必要ない場合に、PHP の軽量な代替品を使用できますか? 私が知っていることから、array
内部的にはハッシュ マップであり、要素の単純な配列を格納するには過剰で非効率的です。PHP に C++ の に似たクラスまたはプログラミング構造があればstd::vector
、それは素晴らしいことです。
2 に答える
SPL データ構造を見てください。例はhttp://www.php.net/manual/en/class.splfixedarray.phpで、通常の配列より高速です。
いいえ、PHP には と厳密に同等のものはありませんstd::vector
。
多目的配列またはSPL の追加データ構造の 1 つ、つまりSplFixedArray
、ArrayObject
およびいくつかのHeapsとStacksを使用するだけですが、実際にはどれも同等ではありません。
メモリを節約するために私が考えることができる最も近いものは、Judy Arrays の PECL 拡張です。
PHP Judy は、スパース動的配列 (別名 Judy 配列) を実装しています。この拡張機能は、Judy C ライブラリに基づいています。Judy 配列は、データが取り込まれたときにのみメモリを消費しますが、必要に応じて利用可能なすべてのメモリを利用するために拡張できます。Judy の主な利点は、スケーラビリティ、高性能、およびメモリ効率です。
次のモードをサポートしています。
BITSET
- Judy Array をビットセットとして定義し、キーを整数、値をブール値として定義します。INT_TO_INT
- キー/値を持つ Judy 配列を整数として定義し、整数のみを定義します。INT_TO_MIXED
- 整数型のキーと任意の型の値を持つ Judy 配列を定義します。STRING_TO_INT
- キーを文字列、値を整数、および整数のみとして Judy 配列を定義します。STRING_TO_MIXED
- 文字列としてのキーと任意の型の値を持つ Judy 配列を定義します。
あなたはおそらくしたいですINT_TO_MIXED
。私が言ったように、それは私が考えることができる最も近いものです。それは同じではありません。以前に使用したことがないため、効率の点で要件を満たしているかどうかはわかりません.