यदि आप इसके बारे में एल्गोरिदमिक रूप से सोचते हैं, तो डुप्लिकेट को हटाने का तरीका एक सूची के माध्यम से जाना है, आपको ढूंढने वाली वस्तुओं का ट्रैक रखना है, और उन चीज़ों से छुटकारा पाएं जो पहले से ही "इस" सूची में हैं। इसे पूरा करने का एक आसान तरीका एक सूची को सॉर्ट करना है। इस तरह यह स्पष्ट है कि डुप्लीकेट को कुशलता से हटाया जाए। अपने बारे में सोचो, अकेले कंप्यूटर छोड़ दो; डुप्लीकेट को हटाने के लिए इनमें से कौन सी सूचियां आसान है?
apple
banana
cantaloupe
apple
durian
apple
banana
cantaloupe
या
apple
apple
apple
banana
banana
cantaloupe
cantaloupe
durian
संपादित करें: इसे में एक सा लग रही है (और this article खोजने) के बाद, यह की तरह दो दोनों मिलता है जबकि काम किया, वे नहीं कार्यात्मक रूप से बराबर कर रहे हैं, लग रहा है या कम से कम वे हमेशा नहीं होते हैं। इन बातों के एक जोड़े की व्याख्या करने के लिए:)
- array_unique (मान सॉर्ट करता, जैसा कि आप का उल्लेख किया है, तो array_flip (array_flip()) वापसी होगी नहीं एक ही आदेश दिया सरणी - लेकिन इस वांछित हो सकता है।
- यदि मान ऑब्जेक्ट्स हैं, तो आप उन्हें चाबियाँ नहीं बना सकते हैं (दाएं?), यानी फ्लिप विधि सभी सरणी, पर बॉक्स से बाहर नहीं काम करेगी, जबकि वैल्यू विधि मूल्य के बावजूद ठीक काम करती है प्रकार के।
स्रोत
2011-12-01 21:43:33
मुझे दस्तावेज को देखने के लिए सहमत होना होगा, सॉर्टिंग के लिए एक वैकल्पिक पैरामीटर है, लगभग एक मृत दे देता है कि वे आंतरिक रूप से सॉर्टिंग के साथ तुलना करते हैं। Array_flip (array_flip()) का उपयोग करके – Tim
आपको सॉर्ट करने की आवश्यकता के बिना अद्वितीय मान देता है। निश्चित रूप से एक बेहतर तरीका होना चाहिए? – Lizard
वैसे यह समझ में आता है, क्योंकि मानों को "squashed" होना होगा क्योंकि कुंजी में डुप्लिकेट नहीं हो सकते हैं। इसके बारे में सोचते हुए, यह ऑपरेशन को ओ (एन) पर छोड़ देगा यदि सरणी के लिए असाइनमेंट निरंतर समय है। अपने प्रश्न का उत्तर देने के लिए, मुझे यकीन नहीं है कि बिल्ट-इन फ़ंक्शन मेरे सिर के ऊपर से क्यों नहीं करता है। –