सॉर्ट किए बिना मैं एक autoloader बना रहा हूं जो include_path को बढ़ाता है। यह एक सरणी लेता है, विस्फोट() डी को पथ शामिल करता है, वर्तमान निर्देशिका के सभी संदर्भों को हटा देता है, सरणी की शुरुआत में एक एकल निर्देशिका जोड़ता है, और आखिर में पूरी चीज़ को एक साथ शामिल करने के लिए एक साथ शामिल करें । नीचे दिए गए कोडarray_unique()
<?php
static public function extendIncludePath (array $paths)
{
// Build a list of the current and new paths
$pathList = array_merge (explode (PATH_SEPARATOR, $paths), explode (PATH_SEPARATOR, get_include_path()));
// Remove any references to the current directory from the path list
while ($key = array_search ('.', $pathList))
{
unset ($pathList [$key]);
}
// Put a current directory reference to the front of the path
array_unshift ($pathList, '.');
// Generate the new path list
$newPath = implode (PATH_SEPARATOR, $pathList);
if ($oldPath = set_include_path ($newPath))
{
self::$oldPaths [] = $oldPath;
}
return ($oldPath);
}
?>
मैं भी यह imploding से पहले सरणी पर array_unique() का उपयोग करने के लिए इतना है कि पीएचपी अगर किसी लापरवाह है एक ही स्थान पर देख कई बार नहीं रखता चाहते थे सूचीबद्ध और अधिक एक ही पथ निर्दिष्ट करता है एक बार से अधिक। हालांकि, मुझे सरणी के क्रम क्रम को बनाए रखने की भी आवश्यकता है क्योंकि निर्देशिका में शामिल पथ में परिभाषित क्रम में निर्देशिका में दिखता है। मैं पहले वर्तमान निर्देशिका में देखना चाहता हूं, फिर खोज निर्देशिकाओं की मेरी सूची और आखिरकार मूल में पथ शामिल है ताकि, उदाहरण के लिए, डिफ़ॉल्ट में एक सामान्य लाइब्रेरी का पुराना संस्करण शामिल है Ipath को एक नए संस्करण के पक्ष में शामिल नहीं किया गया है मेरी खोज सूची में।
इन कारणों से मैं array_unique() का उपयोग नहीं कर सकता क्योंकि यह सरणी की सामग्री को टाइप करता है।
क्या मेरे सरणी में तत्वों के क्रम को संरक्षित करने के लिए array_unique प्राप्त करने का कोई तरीका है?
क्रमबद्ध करें: '$ सरणी = array_flip (array_flip ($ सरणी))' एक आप के लिए विकल्प है? ('array_flip' कुंजी के साथ मानों को स्वैप करता है, और चूंकि कुंजी हमेशा अनूठी होती हैं, इसलिए एक डबल 'array_flip' आपके सरणी में मानों को अद्वितीय बनाता है।) – pinkgothic