दुर्भाग्य है array_combine का कोई अंतर्निहित उलटा। एक को परिभाषित करने का कोई तरीका नहीं है, क्योंकि array_combine एकाधिक पैरामीटर की अपेक्षा करता है और हम फ़ंक्शन से कई मान वापस नहीं कर सकते हैं।
हम array_combine के लिए एक विकल्प बना सकते हैं जो एक भी तर्क लेता है: कुंजी की सरणी और अन्य सरणी में एक साथ लपेटकर मानों की सरणी। यह परिवर्तन कहा जाता है "uncurrying" और "call_user_func_array" समारोह द्वारा किया जाता है:
$array_comb = function($arr) { return call_user_func_array('array_combine', $arr); };
यह वैकल्पिक समारोह एक व्युत्क्रम है:
$compose = function($f, $g) {
return function($x) use ($f, $g) { return $f($g($x)); };
};
: यदि हम समारोह रचना को परिभाषित
$array_split = function($arr) { return array(array_keys($arr), array_values($arr)); };
फिर निम्न कार्य सभी (विस्तारित) बराबर हैं, यानी। वे सब उनके तर्क में कोई बदलाव नहीं लौटने:
$identity = function($x) { return $x; };
$left_inverse = $compose($array_split, $array_comb); // Split then combine
$right_inverse = $compose($array_comb, $array_split); // Combine then split
ध्यान दें कि वे अलग अलग तर्क प्रकारों हालांकि स्वीकार करते हैं:
- $ पहचान कुछ भी पर काम करेंगे।
- $ left_inverse किसी भी सरणी पर काम करेगा।
- $ right_inverse arrays-of-arrays पर काम करेगा, जहां बाहरी सरणी में 2 तत्व होते हैं, दोनों आंतरिक सरणी बराबर लंबाई के होते हैं और पहले आंतरिक सरणी में केवल पूर्णांक और तार होते हैं।
कार्यों को देखा, उनका इस्तेमाल किया और वे काम करते हैं। तो बाकी सभी सही हैं। मुझे लगता है, मैं PHP मैनुअल या किसी संदर्भ पुस्तक के साथ समय बिताना होगा।आप सभी को बहुत बहुत धन्यवाद। – Bululu