मेरे पास दो सरणियाँ हैं
Array ([0] = & gt; Array ([ आईडी] = & gt; 1 [नियंत्रक] = & gt; उपयोगकर्ता [क्रिया] = & gt; अनुक्रमणिका) [1] = & gt; ऐरे ([आईडी] = & gt; 1 [नियंत्रक] = & gt; उपयोगकर्ता [कार्रवाई] = & gt;) [2] = & gt; ऐरे ([आईडी] = & gt; 1 [नियंत्रक] = & gt; उपयोगकर्ता [क्रिया] = & gt; लॉगिन)) अर्रे ([0] = & gt; ऐरे ([आईडी] = & gt; 1 [नियंत्रक ] = & Gt; उपयोगकर्ता [क्रिया] = & gt; अनुक्रमणिका) [1] = & gt; ऐरे ([आईडी] = & gt; 1 [नियंत्रक] = & gt; उपयोगकर्ता [कार्रवाई] = & gt;) [2] = & gt; अर्रे [आईडी] = & gt; 1 [नियंत्रक] = & gt; उपयोगकर्ता [एक्शन] = & gt; लॉगआउट))
अगर मैं पहले सरणी से पूर्ण नेस्टेड ऐरे को निकालना चाहता हूं एटक 2 सरणी में पाया जाता है (कुंजी के आधार पर ['नियंत्रक'] & amp; [['एक्शन']) तो पहले सरणी में केवल 3 [2] सरणी अद्वितीय है।
आउटपुट होना चाहिए:
Array ([0] = & Gt; एरे ([आईडी] = & gt; 1 [नियंत्रक] = & gt; उपयोगकर्ता [कार्रवाई] = & gt; लॉगिन))
कृपया नोट करें कृपया ध्यान दें कि दूसरी सरणी को उसी क्रम में पहले के रूप में जरूरी नहीं है जैसा कि मेरे प्रश्न में विरोध किया गया था, जहां प्रत्येक सरणी के पहले दो सरणियाँ समान होती हैं।
मैंने जो प्रयास किया है वह है:
$ result = array (); के लिए ($ i = 0; $ i & lt; गिनती ($ a); $ i ++) {$ परिणाम [] = array_diff ($ a [$ i], $ b [$ i]); } Print_r ($ परिणाम); // यह आवश्यक आउटपुट नहीं देता है यह हर चीज़ को हटा देता है और ऐरे ([0] = & gt; सरणी () [1] = & gt; सरणी () [2] = & gt; सरणी ([क्रिया] = & gt; लॉगिन) जैसे वापस लाती है
पूर्व>
आप इस बारे में कई तरीके देख सकते हैं। यहाँ एक है जो मुझे लगता है कि बहुत आसान होगा।
सबसे पहले, $ a
पर आधारित एक नया सरणी सेट करें, इसे नियंत्रक और एक्शन एट्रिब्यूट्स द्वारा अनुक्रमित करें।
< पूर्व> $ अंतिम = सरणी (); विदेशी मुद्रा ($ एक एएस $ आइटम) {$ अंतिम [$ आइटम ['नियंत्रक'] $ आइटम ['कार्रवाई']] = $ आइटम; }
अब आप दूसरी सरणी के माध्यम से किसी भी मेल खाने वाली वस्तुओं को निकाल सकते हैं।
foreach ($ b as $ item) {unset ($ final [ $ आइटम ['नियंत्रक']। $ Item ['क्रिया']]); }
अब $ अंतिम
वह ऑर होना चाहिए जिसे आप चाहते हैं।
कार्य उदाहरण:
No comments:
Post a Comment