मैं मानक PHP लाइब्रेरी (एसपीएल) की जांच कर रहा हूं। मैंने पहले केवल सरणी का उपयोग किया और अभी पाया कि PHP में इतने सारे मानक वर्ग हैं। लेकिन मैन्युअल में कोई भी शब्द नहीं है कि इसका उपयोग करने की सिफारिश की जाती है या नहीं। उदाहरण के लिए, वे स्पष्ट रूप से foreach
निर्माण को पुनरावृत्त करने के लिए अनुशंसा करते हैं क्योंकि यह तेज़ है। और इस पुस्तकालय के बारे में क्या? अगर मुझे किसी ऑब्जेक्ट में कुछ डेटा स्टोर करने की ज़रूरत है, तो क्या मुझे अपनी स्थिति के लिए कुछ ठोस एसपीएल कक्षा का उपयोग करना चाहिए या मानक सरणी का उपयोग करना बेहतर है?PHP एसपीएल, क्या इसका उपयोग करने योग्य या कच्चे सरणी कार्य बेहतर हैं?
उत्तर
आपके प्रश्न के लिए बहुत कुछ है। क्या आप एसपीएल डेटा संरचनाओं का उपयोग करना चाहिए? निर्भर करता है।
PHP सरणी मानचित्र, एक लिंक की गई सूची या सरणी के रूप में कार्य कर सकती है। बहुत ही कम आप वास्तव में एक डेटा प्रकार चाहते हैं जो उन सभी चीजों के रूप में कार्य करता है, इसलिए एसपीएल डेटा प्रकारों की केंद्रित प्रकृति इतनी सीमित नहीं है। वास्तव में, अधिकांश "बाहरी" (और कुछ "अंदरूनी") PHP की सरणी को एक झगड़ा मानेंगे।
PHP की सरणी में मुख्य दोष यह है कि यह बहुत मेमोरी का उपयोग करता है। यहां तक कि यदि आप केवल एक निश्चित, अनुक्रमिक, अनुक्रमित सरणी चाहते हैं, तो आपके पास चीजों के साथ एक साथ जुड़े हुए हैं और कुंजी के लिए भंडारण का ओवरहेड है। इसके बावजूद, PHP की सरणी आमतौर पर ऑब्जेक्ट प्रकारों की तुलना में बहुत तेज़ होती है यदि आप अधिकतर डेटा जोड़ रहे हैं और इसे फिर से सक्रिय कर रहे हैं, शायद इसलिए कि फ़ंक्शन धीमी चीजों को कॉल करता है।
आम तौर पर, मुझे नहीं लगता कि कई लोग एसपीएल डेटा संरचनाओं का उपयोग करते हैं। ज्यादातर, मुझे लगता है, क्योंकि PHP और वेब अनुप्रयोगों के संदर्भ में वे आम तौर पर बहुत लागू नहीं होते हैं। आप आमतौर पर छोटे सरणी से निपट रहे हैं, जहां ऑपरेटर और सरणी कार्यों में निर्मित की सुविधा एसपीएल प्रकारों के किसी भी फायदे से अधिक है।
कहा:
आप एक स्थिति में अपने आप को मिल जाए, जहाँ आप (बीच में को हटाने डालने /) एक लिंक्ड सूची के रूप में एक सरणी का उपयोग कर रहे हैं, तो एसपीएल दोगुना जुड़ा हुआ सूचियों में से एक का प्रयास करें।
यदि आप स्वयं को एक बड़ी अनुक्रमित सरणी का उपयोग करते हुए पाते हैं, तो
SPLFixedArray
आज़माएं। वे निश्चित रूप से बहुत कम स्मृति का उपभोग करेंगे।यदि आपको कुंजी के रूप में ऑब्जेक्ट्स के साथ नक्शा रखने की आवश्यकता है, तो
SplObjectStorage
का उपयोग करें (क्योंकि PHP सरणी ऑब्जेक्ट कुंजी के साथ काम नहीं करती है)।यदि आप किसी सरणी में आदेश दिया गया डेटा रखना चाहते हैं, तो ढेर में से एक आज़माएं।
बेंचमार्क देशी सरणी बनाम एसपीएल वस्तु और उपयोग जो भी स्मृति + गति + सादगी दुविधा यह है कि आप सूट है।
+1, लेकिन मैं अपने लिए कहूंगा, मैं हमेशा मूल php arrays की तरफ झुकता हूं क्योंकि उनके पास शानदार भाषा एकीकरण है और सभी PHP के अद्भुत सरणी कार्यों के साथ काम करता है। स्प्ल अक्सर php में एक मिस्फीट की तरह लगता है। – goat
मैं मानता हूं कि ये डेटा संरचनाएं एक थके हुए अंगूठे की तरह चिपक जाती हैं। मैं आमतौर पर केवल डेटा का क्रंच करते समय उनका उपयोग करता हूं (और फिर भी, PHP भाषा की मेरी पहली पसंद नहीं है) या जब मुझे संदर्भ द्वारा सरणी पास करने की आवश्यकता होती है। – Matthew
- 1. नियमित सरणी के बजाय एसपीएल ऐरेऑब्जेक्ट, ऐरेइटरेटर, रिकर्सिवएरे इटरेटर का उपयोग करने के क्या फायदे हैं?
- 2. PHP एसपीएल इटरेटर्स
- 3. PHP का एसपीएल: क्या एरे से जुड़े इंटरफेस में सभी सरणी गुण शामिल हैं?
- 4. एसपीएल बनाम ऐरे: हमें एसपीएल का उपयोग कब करना चाहिए और हमें PHP में ऐरे का उपयोग कब करना चाहिए?
- 5. उपयोग करने के लिए बेहतर क्या है, हार्डकोडेड सरणी या संसाधन स्ट्रिंग सरणी?
- 6. बेहतर क्या है: जेसन या एक्सएमएल (PHP)
- 7. बेहतर PHP, जेएसपी या अन्य
- 8. क्या यह बाइट [] और char [] arrays को पूल करने योग्य है या यह बेहतर है कि
- 9. PHP में सोप कार्य करने के लिए सरणी पासिंग
- 10. एक कच्चे सरणी
- 11. एक एसिंक/प्रतीक्षा करने योग्य कार्य
- 12. इसका उपयोग कर रहे हैं?
- 13. कार्य को प्रतीक्षा करने योग्य कैसे करें
- 14. आउटपुट कच्चे एक्सएमएल का उपयोग php
- 15. पूर्णांक सरणी या संरचना सरणी - जो बेहतर है?
- 16. PHP जांचें कि क्या सरणी समान हैं?
- 17. पायथन में, इसका मतलब क्या है यदि कोई ऑब्जेक्ट सबस्क्रिप्ट करने योग्य है या नहीं?
- 18. स्विंग के लिए उपयोग करने योग्य डेटाबेस लाइब्रेरी क्या हैं?
- 19. क्या सिम्फनी और केकेपीएचपी उपयोग करने योग्य हैं?
- 20. क्या सीएसएस फ्रेमवर्क वास्तव में उपयोग करने योग्य हैं?
- 21. एसपीएल Autoloading सर्वोत्तम प्रथाओं
- 22. PHP में एक सरणी कुंजी मौजूद है या नहीं, यह निर्धारित करने के लिए तेज़ और बेहतर क्या है?
- 23. PHP ऑब्जेक्ट या एक सरणी
- 24. PHP फ़ंक्शन तर्क - एक सरणी का उपयोग करें या नहीं?
- 25. एक बेहतर php array_merge
- 26. TestContext.Properties उपयोग योग्य हैं?
- 27. क्या PHP 2 डी सरणी को स्थानांतरित करने का कोई बेहतर तरीका है?
- 28. क्या हम jQuery घोषित करते हैं या हम इसका उपयोग करते हैं?
- 29. रेल: विश्वसनीय संसाधन: उपयोग करने योग्य या अनावश्यक/अतिरंजित?
- 30. क्या सूची या संग्रह का उपयोग करना बेहतर है?
यदि आप किसी ऑब्जेक्ट में डेटा संग्रहीत करते हैं, तो आप ArrayAccess या ArrayIterator को लागू करके ऑब्जेक्ट पर फिर से सक्रिय कर सकते हैं, लेकिन अंतर्निहित डेटा अभी भी एक सादे पुराने PHP सरणी में संग्रहीत है। नियमित सरणी ठीक है, अगर आप किसी ऑब्जेक्ट में डेटा स्टोर करना चाहते हैं, तो अपने विवेकानुसार [Iterators] (http://www.php.net/manual/en/spl.iterators.php) को कार्यान्वित करें। – drew010