क्या कोई बता सकता है कि PHP सहयोगी सरणी कैसे लागू करता है? PHP अंतर्निहित डेटा संरचना क्या उपयोग करता है? क्या PHP हैश कुंजी है और इसे किसी प्रकार के हैश मानचित्र में संग्रहीत करता है? मैं उत्सुक हूं क्योंकि मैं सोच रहा था कि एसोसिएटिव सरणी का प्रदर्शन, जहां कुंजी डालने और खोजते समय।PHP में सहयोगी सरणी कैसे लागू की जाती हैं?
उत्तर
अच्छा, इसके लायक होने के लिए, सभी PHP सरणी एसोसिएटिव सरणी हैं।
यह सब हैश टेबल है, विभिन्न वेब मंचों में सूत्रों के अनुसार: http://www.usenet-forums.com/php-language/15348-zend-engine-array-implementation.html
आप सुनिश्चित हो करना चाहते हैं, स्रोत पढ़ा, तो यह संकलन है, लेकिन यह सुनिश्चित कर लें कि आप कर सकते trust your compiler (चेतावनी: पीडीएफ, और असंबंधित, लेकिन बहुत अच्छा)।
लिंक टूटा हुआ है। –
@EBGreen सही है।
जो आपको कुछ रोचक प्रदर्शन समस्याओं देता है, खासकर जब किसी सूची के रूप में सरणी का इलाज करते हैं और [] (सरणी जोड़ें) ऑपरेटर का उपयोग करते हैं। PHP सबसे बड़ी संख्यात्मक कुंजी को कैश नहीं करता है और इसमें एक जोड़ता है, इसके बजाय यह लगता है कि अगली संख्यात्मक कुंजी क्या होनी चाहिए, यह जानने के लिए सभी चाबियों को पार करना प्रतीत होता है। PHP की निराशाजनक सरणी-जैसी-सूची प्रदर्शन की वजह से मैंने पायथन में लिपियों को फिर से लिखा है।
एसोसिएटिव सरणी में मानक dict/हैश प्रदर्शन ओवरहेड होता है।
क्या आप इस बारे में निश्चित हैं? मैंने अभी 1000 प्रविष्टियों की एक टेस्ट सरणी (एक नई सरणी की प्रतिलिपि बनाना, एक करके एक) पर बेंचमार्क चलाए हैं, और यदि आप नई सरणी के लिए कुंजी निर्दिष्ट नहीं करते हैं, तो यह लगातार 7% तेज है (PHP 5.2.6 पर) – JamShady
यह संभव है कि उन्होंने हाल ही में इसे बदल दिया है। जब मैं काम कर रहा था तो मैं 5.1 का उपयोग कर रहा था। जब आप 10k प्रविष्टियों या उससे अधिक के बारे में बात कर रहे हों तो PHP की सरणी AWFUL थी। – jcoby
AFAIK यह मामला नहीं है, कृपया तुलना करें: [एक ज़ेंड हैश तालिका में तत्व 'nNextFreeElement' है ...] (http://stackoverflow.com/questions/3698743/how-to-find-the-next-numeric -इंडेक्स-ऑफ-ए-एक्सचेंज-एरे/3698786 # 3698786) – hakre
यह एक हैश तालिका है। प्रकार घोषणा और हैशिंग समारोह यहां हैं:
http://svn.php.net/viewvc/php/php-src/trunk/Zend/zend_hash.h?view=markup
एक हल्के वजन सरणी और spl के भीतर एक लिंक्ड सूची (मानक php lib)
उच्चतम मतदान जवाब लिंक टूट गया है नहीं है और नहीं देता वह बहुत स्पष्टीकरण।
PHP सी में लिखा गया है और अंतर्निहित संरचना केवल एक सी सरणी है। सी सरणी सिर्फ स्मृति के टुकड़े हैं। सी सरणी में इंडेक्स निरंतर होना चाहिए, आपके पास इंडेक्स 0 और उसके बाद आने वाला इंडेक्स 1000 नहीं हो सकता है। एस सरणी में जोड़े जाने से पहले, सहयोगी सरणी कुंजी को काम करने के लिए, उन्हें हैश फ़ंक्शन के माध्यम से उचित सी इंडेक्स में परिवर्तित कर दिया जाता है।
एक पूर्ण स्पष्टीकरण के लिए, मुझे यह लिंक अधिक जानकारीपूर्ण पाया गया।
http://nikic.github.io/2012/03/28/Understanding-PHPs-internal-array-implementation.html
- 1. जावा में सरणी कैसे लागू की जाती हैं?
- 2. सहयोगी PHP सरणी
- 3. PHP सहयोगी सरणी - स्ट्रिंग
- 4. PHP सहयोगी सरणी की कुंजी (अनुक्रमणिका) सीमाएं?
- 5. उद्देश्य सी में लागू श्रेणियां कैसे लागू की जाती हैं?
- 6. जावास्क्रिप्ट सरणी सहयोगी हैं?
- 7. कमजोर सरणी कैसे उपयोग की जाती हैं?
- 8. सहयोगी सरणी
- 9. PHP में कुंजी की सरणी का उपयोग करके एक सहयोगी सरणी को फ़िल्टर कैसे करें?
- 10. सी स्तर पर PHP सरणी कैसे कार्यान्वित की जाती है?
- 11. neo4j दृढ़ता कैसे लागू की जाती है?
- 12. निर्भरता संपत्ति कैसे लागू की जाती है?
- 13. एक सहयोगी सरणी से मूल्यों की सरणी कैसे प्राप्त करें?
- 14. PHP: लूप के दौरान सहयोगी सरणी कैसे मुद्रित करें?
- 15. संगत (जावास्क्रिप्ट में) सहयोगी सरणी
- 16. ksh सहयोगी सरणी
- 17. बाश: बहुआयामी सहयोगी सरणी
- 18. बैश स्क्रिप्टिंग - सहयोगी सरणी
- 19. एक सहयोगी सरणी
- 20. PHP: सहयोगी सरणी सूचकांक में रिक्त स्थान का उपयोग
- 21. स्ट्रिंग। लम्बाई सी # में कैसे लागू की जाती है?
- 22. केक में लगातार जेवीएम सुविधा कैसे लागू की जाती है?
- 23. बैश में सहयोगी सरणी बनाएं 3
- 24. एरे सहयोगी सरणी में तत्व जोड़ें
- 25. PHP शाब्दिक कुंजी के साथ सहयोगी सरणी preend?
- 26. जावास्क्रिप्ट में सहयोगी सरणी कॉपी करें?
- 27. एमपीआई प्रक्रियाएं कैसे शुरू की जाती हैं?
- 28. जावास्क्रिप्ट सरणी सहयोगी और अनुक्रमित?
- 29. ओएस स्तर पर नींद कैसे लागू की जाती है?
- 30. बैश में एक सहयोगी सरणी (हैश) को कैसे निर्यात करें?
मैं किसी और के लिए के माध्यम से पीसने के लिए इस लिंक छोड़ देंगे, लेकिन आप http://svn.php.net/viewvc/php/php-src पर [PHP के लिए वास्तविक सी स्रोत देख सकते हैं/](http://svn.php.net/viewvc/php/php-src/) –