कैसे वापस जाने के लिए केवल नाम के समूहों?
यह वर्तमान में (PHP7) संभव नहीं है। आपको हमेशा मिश्रित प्रकार की सरणी मिल जाएगी, जिसमें संख्यात्मक और नामित कुंजी होंगी।
यह subpattern तो नाम से अपनी सामान्य संख्यात्मक स्थिति से मेल खाता है सरणी में अनुक्रमित किया जाएगा और यह भी:
बोली पीएचपी पुस्तिका (http://php.net/manual/en/regexp.reference.subpatterns.php) देता है।
समस्या निम्नलिखित कोड के टुकड़े मदद कर सकता है हल करने के लिए:
1. फ़िल्टर सारणी पर एक is_string जांच का उपयोग करके सरणी कुंजी (के लिए PHP5.6 +)
$array_filtered = array_filter($array, "is_string", ARRAY_FILTER_USE_KEY);
2।तत्वों से अधिक foreach और सेट नहीं करता है, तो सरणी कुंजी is_int() (सभी पीएचपी संस्करणों)
/**
* @param array $array
* @return array
*/
function dropNumericKeys(array $array)
{
foreach ($array as $key => $value) {
if (is_int($key)) {
unset($array[$key]);
}
}
return $array;
}
इसका एक सरल PHP समारोह dropNumericKeys()
नाम दिया है। preg_match*()
मिलान के लिए नामित समूहों का उपयोग करके चलाने के बाद मैचों की सरणी के बाद-प्रोसेसिंग के लिए। फ़ंक्शन $array
स्वीकार करता है। यह सरणी को पुन: सक्रिय करता है और पूर्णांक प्रकार के साथ सभी कुंजियों को हटा देता है/अनसेट करता है, स्ट्रिंग प्रकार के बिना कुंजियों को छोड़ देता है। अंत में, फ़ंक्शन "अब" नाम वाली कुंजी के साथ सरणी देता है।
नोट: फ़ंक्शन PHP डाउनवर्ड कॉम्पटिबिलिटी के लिए है। यह सभी संस्करणों पर काम करता है। array_filter
समाधान स्थिर ARRAY_FILTER_USE_KEY
पर निर्भर करता है, जो केवल PHP5.6 + पर उपलब्ध है। देखें http://php.net/manual/de/array.constants.php#constant.array-filter-use-key
स्रोत
2016-01-11 14:21:40
छोटे सरणी में यह कोई समस्या नहीं पैदा करता है लेकिन बहुत सारे पैटर्न में बहुत अधिक पैटर्न में उच्च स्मृति आवश्यकताओं के साथ समस्या हो सकती है। दूसरा, यह उस तरह से क्लीनर दिखता है, और वहां (इस गैर मौजूद संशोधक के साथ) कोड की एक पंक्ति कम होगी, इसलिए त्रुटि की संभावना कम होगी। – rsk82
इसके विपरीत: क्योंकि यह पीसीआरई द्वारा नहीं किया जा सकता है, आपको अधिक कोड जोड़ना होगा, जहां और समस्याएं हो सकती हैं। – Charles
मेरा मतलब सरणी में अतिरिक्त तत्व था। – Maerlyn