2013-07-18 13 views
5

このトピックに関する多くの質問がありましたが、いずれも私のケースをカバーしていません。多次元配列の代わりにSpl DataStructuresを使用するPHP

  1. 役割
  2. グループは
  3. ラッパー(それが何を推測...)特権工場権限、役割やグループのために:

    私は5つのクラスに基づいてACLモジュールを構築していますクラス

  4. アクセスリストグループとロールのストア(使用状況とケースに基づいて)

SplQueueを使用して特権レベル(主に継承された特権)を格納することを考えています。したがって、すべてを格納するオブジェクトを1つ使用し、通常の多次元配列が最適な選択ではないと考えています。流れはthis pasteのようになり、それはTL; DRです。それは申し訳ありません。

私の場合、SplQueueは過度のものになるでしょうか?

Splデータ構造を使用する必要がありますか?もしあれば、どちらのデータ構造ですか?

EDIT さて私はそうUNIXベースのGBACに保つことができ、使用方法の良い例を考えることができませんでした。

+0

データ構造は、それに対して実行される操作のユースケースをサポートする必要があります。あなたはそれらのどれも言及していません。 – Sven

+0

まあ、目的は一般的です、それを書こうと私に秒を与え、秒で更新されます –

+3

私はこれが本当に小さな配列のために残虐だと思う。 (小要素は100〜1000要素以下)。内部ハッシュマップは、ほとんどの場合、十分に高速なアクセスを提供します。あなたが本当にlog(n)アクセスと挿入時間などを必要とするときは、SPLは良いです。 – bwoebi

答えて

4

データをオブジェクト形式で保存する場合は、SplObjectStorageを使用します。 SplQueueは小規模な配列のために過剰です。

SplQueueはFIFOで動作します。

最後に最後までアクセスすることはできません。時間がかかります。

SplQueueの代わりに、配列インデックスを使用して任意の要素に直接アクセスできるように、配列を使用することをお勧めします。

また、この質問の答えを確認することができます。Associative Array versus SplObjectStorage

また、あなたがSPLobjectStorage、配列、here is the codeのパフォーマンスを確認することができます。

さらにread hereです。

直線的にスケールされたSplObjectStorage。アレイのパフォーマンスは、小さいデータセットでは予測できない(標準偏差が大きい) でした。 SplObjectStorageは実際には、多くのオブジェクトをセットに格納するための優れたソリューションです。

データが小さい場合は、大量のデータにはSplObjectStorageを使用してください。

+1

合計20個のロール、6個のグループと1ページの識別子(ページ識別子はアプリケーションの特定の部分を決定するために使用されます) 6x1 - グループ定義とグループ内の定義*(6x1)x20 *(少なくとも私のアーキテクチャ/ヘッドと一緒に)は、100ページのアプリケーションで劇的に増加するストレージ内に120の定義をもたらします。配列やSplObjectStorageを使用すると、問題が発生する可能性があります。 ありがとう! –

+0

@DaGhostmanDimitrovあなたがおおよそ120のデータを持っていれば、配列を使うことができます。もしあなたが何千ものレコードを持っていれば、私は答えにリンクを追加したので、SplObjectStorageを使います。大規模なデータの場合はパフォーマンスの問題がアレイになり、小さなデータの場合はSplObjectStorageのパフォーマンスが配列より悪くなることがわかります。今あなたのデータに依存します。 –

+0

アドバイス私:どのアプローチをとるべきですか?配列を使用し、構造体のデータ準備ができていないか、データの準備ができていない(良い言葉を言い表すことはできません、英語は私の母国語ではありません) –