मैं एक दूसरे के साथ दो सरणियों विलय करना चाहते हैं:दूसरी सरणी से केवल मानों को ले कर दो सरणी कैसे विलय करें जिसमें पहले की तरह एक ही कुंजी है?
$merged = array(1 => 'a', 3 => 'c*');
:
$filtered = array(1 => 'a', 3 => 'c');
$changed = array(2 => 'b*', 3 => 'c*');
जबकि मर्ज $filtered
के सभी तत्वों और $changed
के उन सभी तत्वों $filtered
में एक इसी कुंजी है को शामिल करना चाहिए
array_merge($filtered, $changed)
$changed
की अतिरिक्त कुंजी भी $filtered
में जोड़ देगा। तो यह वास्तव में फिट नहीं है।
मुझे पता है कि मैं $keys = array_intersect_key($filtered, $changed)
का उपयोग उन दोनों सरणी में मौजूद कुंजी प्राप्त करने के लिए कर सकता हूं जो पहले से ही काम के आधे हैं।
हालांकि मैं अगर कोई (देशी) समारोह है कि array_intersect_key
द्वारा निर्दिष्ट $keys
साथ एक सरणी में $changed
सरणी को कम कर सकते है सोच रहा हूँ? मुझे पता है कि मैं कॉलबैक फ़ंक्शन के साथ array_filter
का उपयोग कर सकता हूं और उसमें $keys
के विरुद्ध जांच कर सकता हूं, लेकिन शायद उन तत्वों को निकालने के लिए कुछ अन्य शुद्ध रूप से देशी फ़ंक्शन हैं जिनकी चाबियाँ निर्दिष्ट की जा सकती हैं?
मैं पूछ रहा हूं क्योंकि मूल कार्य अक्सर कॉलबैक के साथ array_filter
से अधिक तेज़ होते हैं।
चौराहे के खिलाफ संघ भी कोशिश कर सकते हैं। लेकिन संघ '$ फ़िल्टर किए गए' के साथ-साथ AFAIK की कुंजी भी जोड़ देगा। मै उसे करने की एक कोशिश तो करूंगा। – hakre
मैंने सोचा कि '$ फ़िल्टर किए गए 'की चाबियाँ जोड़ना बिंदु था ...? – deceze
जुप। मैंने अभी इसका परीक्षण किया, मेरी गलती;)। यह बहुत अच्छी तरह से काम करता है, केवल चाबियों का क्रम बदलता है, लेकिन यह कोई समस्या नहीं है क्योंकि मेरे पास उन्हें संख्यात्मक अनुक्रमणिका के रूप में है, इसलिए ksort नौकरी करता है। उत्तम। आपका बहुत बहुत धन्यवाद! – hakre