दिलचस्प पोस्ट
एक asp.net वेब सेवा को कॉल करने के लिए jQuery का उपयोग कैसे करें? ईओनिक 2 में पक्ष मेनू के साथ nav.push का उपयोग करें कुछ करें जब मैं सर्कल के त्रिज्या के अंदर हूं गैर-रिलेशनल डाटाबेस डिज़ाइन ऑब्जेक्ट की एक संपत्ति द्वारा ऑब्जेक्ट्स के सदिश को सॉर्ट करना एमकेमैपदृश्य: एनोटेशन पिन के बजाय, कस्टम व्यू PostgreSQL में टेबल दिखाएं जेएनआई के माध्यम से सी और जावा के बीच पासिंग पॉइंटर्स पायथन 3: अनबाउंड लोकल त्रुटि: असाइनमेंट से पहले संदर्भित स्थानीय चर मेटायर के साथ स्थैतिक फाइलों का सृजन और सेवा करना एक समान प्रश्न चिह्न (?) ऑपरेटर क्या करता है? क्या हम जावा में अहस्ताक्षरित बाइट बना सकते हैं? सीएसएस संपत्ति Jquery का उपयोग कर बदल जब घटना का पता लगाने जेएस या क्वेरी के माध्यम से डाउनलोड करें एक सामान्य प्रकार का उपयोग करते समय `प्रेषक` के परस्पर विरोधी कार्यान्वयन कैसे होता है?

बहुआयामी arrays के साथ array_diff ()

array_diff() का उपयोग करते हुए, मैं इसी तरह की वस्तुओं की तुलना कर उन्हें निकाल सकता हूं, लेकिन क्या होगा यदि मेरे पास निम्न एरे हैं?

array1

 Array ( [0] => Array ( [ITEM] => 1 ) [1] => Array ( [ITEM] => 2 ) [2] => Array ( [ITEM] => 3 ) ) 

Array2

 Array ( [0] => Array ( [ITEM] => 2 ) [1] => Array ( [ITEM] => 3 ) [2] => Array ( [ITEM] => 1 ) [3] => Array ( [ITEM] => 4 ) ) 

मैं समान वस्तुओं को फ़िल्टर करना चाहता हूं; परिणाम रिटर्न चाहिए 4. मैं कैसे मेरी सरणी पुनर्व्यवस्थित कर सकते हैं ताकि मैं array_diff() उपयोग कर सकता हूं?

Solutions Collecting From Web of "बहुआयामी arrays के साथ array_diff ()"

मैं शायद मूल सरणियों के माध्यम से पुनरावृत्त होगा और उन्हें 1-आयामी बना देगा … जैसे कुछ

 foreach($array1 as $aV){ $aTmp1[] = $aV['ITEM']; } foreach($array2 as $aV){ $aTmp2[] = $aV['ITEM']; } $new_array = array_diff($aTmp1,$aTmp2); 

आप array_udiff() का उपयोग कर कस्टम तुलना फ़ंक्शन परिभाषित कर सकते हैं।

 function udiffCompare($a, $b) { return $a['ITEM'] - $b['ITEM']; } $arrdiff = array_udiff($arr2, $arr1, 'udiffCompare'); print_r($arrdiff); 

आउटपुट:

 Array ( [3] => Array ( [ITEM] => 4 ) ) 

यह सरणियों के मौजूदा ढांचे का उपयोग करता है और रखता है, जो मुझे लगता है कि आप चाहते हैं।

array_filter का उपयोग करने वाले कुछ समाधान जो कि बड़े arrays के लिए array_udiff समाधान से कम प्रदर्शन कर रहे हैं, लेकिन जो थोड़ा अधिक सीधा और अधिक लचीला है:

 $array1 = [ ['ITEM' => 1], ['ITEM' => 2], ['ITEM' => 3], ]; $array2 = [ ['ITEM' => 2], ['ITEM' => 3], ['ITEM' => 1], ['ITEM' => 4], ]; $arrayDiff = array_filter($array2, function ($element) use ($array1) { return !in_array($element, $array1); }); // OR $arrayDiff = array_filter($array2, function ($array2Element) use ($array1) { foreach ($array1 as $array1Element) { if ($array1Element['ITEM'] == $array2Element['ITEM']) { return false; } } return true; }); 

हमेशा array_filter साथ, ध्यान दें कि array_filter मूल सरणी की कुंजी को सुरक्षित रखता है, इसलिए यदि आप $arrayDiff को शून्य-अनुक्रमित करना चाहते हैं, तो $arrayDiff = array_values($arrayDiff); array_filter कॉल के बाद

json_encode चाल के साथ एक और मजेदार दृष्टिकोण (यदि आप "कच्चे" की जरूरत है तो पहले स्तर की सरणी में कुछ जटिल मानों की तुलना कर सकते हैं):

 // Compare all values by a json_encode $diff = array_diff(array_map('json_encode', $array1), array_map('json_encode', $array2)); // Json decode the result $diff = array_map('json_decode', $diff);