बहुत से लोगों ने मुझसे पूछा कि कैसे अद्वितीय बहुआयामी सरणी बनाया जाए। मैंने आपकी टिप्पणी से संदर्भ लिया है और यह मेरी मदद करता है।
सबसे पहले, आपके समाधान के लिए @jeromegamez @daveilers को धन्यवाद। लेकिन हर बार जब मैंने जवाब दिया, तो उन्होंने मुझसे पूछा कि यह 'सीरीज़' और 'अनसेरिज़ल' कैसे काम करता है। इसलिए मैं इसका कारण आपके साथ साझा करना चाहता हूं ताकि इससे अधिक लोगों को इसके पीछे की अवधारणा को समझने में मदद मिले।
मैं समझा रहा हूं कि हम चरणों में 'सीरियलाइज़' और 'अस्वाभाविक' का उपयोग क्यों करते हैं:
चरण 1: बहुआयामी सरणी को एक-आयामी सरणी में बदलें
बहुआयामी सरणी को एक-आयामी सरणी में परिवर्तित करने के लिए, पहले सरणी के अंदर सभी तत्वों (नेस्टेड सरणियों सहित) की बाइट स्ट्रीम प्रतिनिधित्व उत्पन्न करें। क्रमबद्ध () फ़ंक्शन मान का बाइट स्ट्रीम प्रतिनिधित्व उत्पन्न कर सकता है। सभी तत्वों के बाइट स्ट्रीम प्रतिनिधित्व को उत्पन्न करने के लिए, कॉलबैक फ़ंक्शन के रूप में array_map () फ़ंक्शन के अंदर क्रमबद्ध () फ़ंक्शन को कॉल करें। परिणाम एक आयामी सरणी होगा चाहे कितने स्तरों पर बहुआयामी सरणी हो।
चरण 2: मूल्यों को अद्वितीय बनाएं
इस एक आयामी सरणी को विशिष्ट बनाने के लिए, array_unique () फ़ंक्शन का उपयोग करें।
चरण 3: इसे बहुआयामी सरणी में वापस लाएं
हालांकि सरणी अब अद्वितीय है, मान बाइट स्ट्रीम प्रतिनिधित्व की तरह दिखता है। इसे वापस बहुआयामी सरणी में वापस लाने के लिए, unserialize () फ़ंक्शन का उपयोग करें।
$input = array_map("unserialize", array_unique(array_map("serialize", $input)));
इस सब के लिए फिर से धन्यवाद।