2013-07-18 9 views
5

के लिए प्रतिस्थापन के रूप में स्प्ल डेटा संरचनाओं के साथ PHP मैंने इस विषय पर कई प्रश्न देखे हैं, लेकिन उनमें से कोई भी मेरे मामले को कवर नहीं करता है।बहु-आयामी सरणी

  1. भूमिका
  2. विशेषाधिकार (.. लगता है कि यह क्या करता है)
  3. समूह
  4. आवरण विशेषाधिकार, भूमिका और समूह के लिए फैक्टरी:

    मैं 5 वर्गों के आधार पर एक एसीएल मॉड्यूल का निर्माण कर रहा हूँ कक्षाएं समूहों/भूमिकाओं के लिए

  5. AccessList स्टोर
(उपयोग और मामले के आधार पर) 210

मैं विशेषाधिकार के स्तर (मुख्य रूप से विरासत विशेषाधिकारों के लिए) को स्टोर करने के लिए स्प्ल्यूयूयू का उपयोग करने के बारे में सोच रहा हूं, इसलिए मैं सबकुछ स्टोर करने के लिए एक ऑब्जेक्ट का उपयोग करने के बारे में सोच रहा हूं और यह नहीं सोचता कि सामान्य बहु-आयामी सरणी सबसे अच्छा विकल्प होगा। प्रवाह this paste की तरह होगा, यह टीएल है; डीआर .. इसके बारे में क्षमा करें।

तो मेरा सवाल है कि स्प्ल्यूयूयू मेरे मामले में एक ओवरकिल होगा?

क्या मुझे उपयोग और वैकल्पिक स्प्ल डेटा संरचना का उपयोग करना चाहिए, और यदि ऐसा है तो क्या?

संपादित खैर मैं उपयोग का एक अच्छा उदाहरण के बारे में सोच नहीं सकता था, इसलिए देता है यूनिक्स आधारित GBAC को रखने के लिए।

+0

डेटा संरचना को उस पर किए गए संचालन के लिए उपयोग मामलों का समर्थन करना चाहिए। आपने उनमें से किसी का भी उल्लेख नहीं किया है। – Sven

+0

वैसे उद्देश्य सामान्य है, मुझे इसे लिखने के लिए एक सेकंड दें और एक सेकंड –

+3

में अपडेट होगा मुझे लगता है कि यह वास्तव में छोटे सरणी के लिए अधिक है। (छोटा 100-1000 तत्वों के नीचे है)। आंतरिक हैशप ज्यादातर तेजी से पर्याप्त पहुंच प्रदान करता है। एसपीएल अच्छा है जब आपको वास्तव में लॉग (एन) एक्सेस और डालने के समय आदि की आवश्यकता होती है। – bwoebi

उत्तर

4

यदि आप ऑब्जेक्ट फॉर्म में अपना डेटा स्टोर करना चाहते हैं तो SplObjectStorage का उपयोग करें। SplQueue छोटे सरणी के लिए overkill होगा।

स्प्लिक्विए फीफो पर काम करता है।

तो आप अंतिम तक या आखिरी तक सीधे पहुंच नहीं सकते हैं और समय लगेगा।

SplQueue के बजाय मैं सुझाव दूंगा कि आप ऐरे का उपयोग करें क्योंकि आप किसी भी तत्व को सीधे सरणी अनुक्रमणिका द्वारा एक्सेस कर सकते हैं। Associative Array versus SplObjectStorage

इसके अलावा, आप SPLobjectStorage और सरणी, here is the code के प्रदर्शन की जांच कर सकते हैं:

तुम भी इस सवाल का जवाब देख सकते हैं।

अधिक read here के लिए।

SplObjectStorage निश्चित रूप से रैखिक रूप से स्केल किया गया। छोटे डेटा सेट के साथ ऐरे प्रदर्शन कम अनुमानित (बड़ा मानक विचलन) था। और SplObjectStorage वास्तव में एक सेट में बहुत सारी वस्तुओं को संग्रहीत करने के लिए एक बेहतर समाधान है।

तो यदि आपका डेटा छोटा है तो आपको सरणी का उपयोग करना चाहिए अन्यथा बड़ी मात्रा में डेटा के लिए SplObjectStorage का उपयोग करना चाहिए।

+1

यदि डेटा बड़ा हो जाता है, तो सरणी में कोई कमी होती है: कुल में 6 भूमिकाएं, 6 समूह और 1 पृष्ठ पहचानकर्ता (पृष्ठ पहचानकर्ताओं का उपयोग ऐप के एक विशिष्ट भाग को निर्धारित करने के लिए किया जाता है) 6x1 - समूह परिभाषाएं और इन-ग्रुप परिभाषाएं * (6x1) x20 * (कम से कम मेरे आर्किटेक्चर/हेड के साथ) जिसके परिणामस्वरूप स्टोरेज में 120 परिभाषाएं होती हैं जो 100 पेज ऐप में नाटकीय रूप से बढ़ेगी। यदि मैं सरणी या SplObjectStorage के साथ जाता हूं तो क्या कोई कमी हो सकती है। धन्यवाद! –

+0

@DaGostmanDimitrov यदि आपके पास लगभग 120 डेटा हैं तो आप सरणी का उपयोग कर सकते हैं और यदि आपके पास हजारों रिकॉर्ड हैं तो SplObjectStorage का उपयोग करें क्योंकि मैंने जवाब में लिंक जोड़े हैं। आप देख सकते हैं कि प्रदर्शन के मुद्दे बड़े डेटा के लिए सरणी में आएंगे और छोटे डेटा के लिए SplObjectStorage का प्रदर्शन सरणी के बाद खराब होगा। अब यह आपके डेटा पर निर्भर करता है। –

+0

मुझे सलाह दें: मुझे किस दृष्टिकोण के लिए जाना चाहिए? सरणी का उपयोग करना और संरचना को कम डेटा तैयार करना या उच्च डेटा तैयार करना (बेहतर शब्दों के बारे में नहीं सोच सकता है, यह माफ करना है, अंग्रेजी मेरा मूल नहीं है) –

संबंधित मुद्दे