2013-05-04 5 views
6

मैं सरणी में डुप्लीकेट कैसे हटा सकता हूं?किसी सरणी में डुप्लीकेट कैसे हटाएं?

उदाहरण के लिए अगर मैं निम्नलिखित सरणी था:

$array = array('1','1','2','3'); 

मैं इसे बनने के लिए

$array = array('2','3'); 
तो

मैं इसे पूरे मूल्य हटाना चाहते हैं इसके बारे में दो पाए जाते हैं चाहते

+0

http://php.net/array_count_values ​​<- मैं पहले इस फ़ंक्शन के साथ कुछ लिखने का प्रयास करूंगा। यह कम से कम गणना करता है कि कितनी बार एक मूल्य का उपयोग किया गया है। अच्छी तरह से चाबी – hakre

+0

देखें http://stackoverflow.com/questions/369602/how-to-delete-an-element-from-an-array-in-php – bestprogrammerintheworld

उत्तर

4

PHP संस्करण के आधार पर, इस पीएचपी> = 4.0.6 के सभी संस्करणों में काम करना चाहिए के रूप में यह अनाम प्रक्रियाएं कि PHP> = 5.3 की आवश्यकता होती है की आवश्यकता नहीं है:

function moreThanOne($val) { 
    return $val < 2; 
} 


$a1 = array('1','1','2','3'); 
print_r(array_keys(array_filter(array_count_values($a1), 'moreThanOne'))); 

DEMO (PHP के संस्करण का चयन करने के लिए आप का उपयोग कर रहे ड्रॉप-डाउन में PHP संस्करण बदलें)

यह काम करता है क्योंकि:

  1. array_count_values सरणी के माध्यम से जाएगा और प्रत्येक मान के लिए एक सूचकांक बनाएगा और हर बार इसे फिर से सामना करने के लिए इसे बढ़ाएगा।
  2. array_filter बनाए गए सरणी को ले जाएगा और moreThanOne फ़ंक्शन को पहले परिभाषित किया जाएगा, यदि यह false देता है, तो कुंजी/मान जोड़ी हटा दी जाएगी।
  3. array_keys सरणी के value भाग को छोड़ देगा जो सरणी को परिभाषित करने वाली कुंजी के साथ सरणी बनाते हैं। यह अंतिम चरण आपको एक परिणाम देता है जो मूल सरणी के भीतर एक से अधिक बार मौजूद सभी मानों को हटा देता है।
+2

बेनामी फ़ंक्शंस 5.3 –

+0

में अच्छा बिंदु प्रस्तुत किया गया था, इसलिए " PHP PHP के लिए केवल PHP 5.4 "यह" होगा "^^ – Jon

+0

यह 4.0.6 में भी काम करेगा, जो तब 'array_filter' पेश किया गया था :) –

2

इस कोड को आजमाएं,

<?php 
    $array = array('1','1','2','3'); 

foreach($array as $data){ 
    $key= array_keys($array,$data); 
    if(count($key)>1){ 

    foreach($key as $key2 => $data2){ 
    unset($array[$key2]); 
     } 
    } 
    } 
    $array=array_values($array); 
    print_r($array); 


?> 

आउटपुट

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

पीएचपी इतने सारे array functions प्रदान करता है, तो आप सिर्फ उन्हें गठबंधन करने के लिए है:

$arr = array_keys(array_filter(array_count_values($arr), function($val) { 
    return $val === 1; 
})); 

संदर्भ: array_keys, array_filter, array_count_values

DEMO

4

आप उन्हें फ़िल्टर कर सकते हैं array_count_values() का उपयोग करके:

$array = array('1','1','2','3'); 
$res = array_keys(array_filter(array_count_values($array), function($freq) { 
    return $freq == 1; 
})); 

फ़ंक्शन मूल मानों और उनके संबंधित आवृत्तियों सहित एक सरणी देता है; फिर आप केवल एक ही आवृत्तियों को चुनते हैं। कुंजी परिणाम कुंजी प्राप्त करके प्राप्त किया जाता है।

Demo

1

किसी सरणी से डुप्लिकेट मान हटाएं।

array_unique($array) 

$array = array(4, "4", "3", 4, 3, "3"); 
$result = array_unique($array); 
print_r($result); 

/* 
    Array 
    (
     [0] => 4 
     [2] => 3 
    ) 
    */ 
संबंधित मुद्दे