Frage

Wie kann ich entfernen Sie doppelte Werte aus einem Array in PHP?

War es hilfreich?

Lösung

Verwenden Sie array_unique () .

Beispiel:

$array = array(1, 2, 2, 3);
$array = array_unique($array); // Array is now (1, 2, 3)

Andere Tipps

//Find duplicates 

$arr = array( 
    'unique', 
    'duplicate', 
    'distinct', 
    'justone', 
    'three3', 
    'duplicate', 
    'three3', 
    'three3', 
    'onlyone' 
);

$unique = array_unique($arr); 
$dupes = array_diff_key( $arr, $unique ); 
    // array( 5=>'duplicate', 6=>'three3' 7=>'three3' )

// count duplicates

array_count_values($dupes); // array( 'duplicate'=>1, 'three3'=>2 )

Verwenden array_values(array_unique($array));

array_unique: für einzigartigen Array array_values: für reindexing

Das einzige, was für mich gearbeitet ist:

$array = array_unique($array, SORT_REGULAR);
$result = array();
foreach ($array as $key => $value){
  if(!in_array($value, $result))
    $result[$key]=$value;
}

manchmal array_unique() ist nicht die Art und Weise, wenn Sie wollen erhalten einzigartige und duplizierte Elemente ...

$unique=array("","A1","","A2","","A1","");
$duplicated=array();

foreach($unique as $k=>$v) {

if( ($kt=array_search($v,$unique))!==false and $k!=$kt )
 { unset($unique[$kt]);  $duplicated[]=$v; }

}

sort($unique); // optional
sort($duplicated); // optional

Ergebnisse auf

array ( 0 => '', 1 => 'A1', 2 => 'A2', ) /* $unique */

array ( 0 => '', 1 => '', 2 => '', 3 => 'A1', ) /* $duplicated */

explode(",", implode(",", array_unique(explode(",", $YOUR_ARRAY))));

Diese kümmert sich um wichtige Verbände und die Schlüssel für die daraus resultierenden neuen Array serialisiert werden: -)

Wir solche Art von Array können bei diesem letzten Wert zu verwenden, wird in Spalte oder Schlüsselwert aktualisiert werden, und wir werden eindeutigen Wert aus dem Array erhalten ...

$array = array (1,3,4,2,1,7,4,9,7,5,9);
    $data=array();
    foreach($array as $value ){

        $data[$value]= $value;

    }

    array_keys($data);
    OR
    array_values($data);

Das ist eine gute Möglichkeit, es zu tun. Vielleicht möchte seine Ausgabe um sicherzustellen, dass wieder ein Array zurück. Jetzt sind Sie nur den letzten eindeutigen Wert zeigt.

Versuchen Sie folgendes:

$arrDuplicate = array ("","",1,3,"",5);

foreach (array_unique($arrDuplicate) as $v){
  if($v != "") { $arrRemoved[] = $v; }
}
print_r ($arrRemoved);

Abhängig von der Größe des Arrays, ich habe festgestellt,

$array = array_values( array_flip( array_flip( $array ) ) );

schneller als array_unique sein.

    if (@!in_array($classified->category,$arr)){        
                                    $arr[] = $classified->category;
                                 ?>

            <?php } endwhile; wp_reset_query(); ?>

erste Mal Prüfwert in Array und fand derselbe Wert ignorieren

Entfernen Sie doppelte Werte aus einem assoziativen Array in PHP.

$arrDup = Array ('0' => 'aaa-aaa' , 'SKU' => 'aaa-aaa' , '1' => '12/1/1' , 'date' => '12/1/1' , '2' => '1.15' , 'cost' => '1.15' );

foreach($arrDup as $k =>  $v){
  if(!( isset ($hold[$v])))
      $hold[$v]=1;
  else
      unset($arrDup[$k]);
}

Array ([0] => aaa aaa-[1] => 12/1/1 [2] => 1.15)

Es können mehrere Möglichkeiten, diese zu tun, die wie folgt lauten

//first method
$filter = array_map("unserialize", array_unique(array_map("serialize", $arr)));

//second method
$array = array_unique($arr, SORT_REGULAR);

Wenn Sie Interesse in der Leistung und haben eine einfache Anordnung, zu verwenden:

array_keys(array_flip($array));

Es ist oft schneller als array_unique.

$a = array(1, 2, 3, 4); 
$b = array(1, 6, 5, 2, 9); 
$c = array_merge($a, $b);
$unique = array_keys(array_flip($c));
print_r($unique);
$arrDuplicate = array ("","",1,3,"",5);
 foreach(array_unique($arrDuplicate) as $v){
  if($v != "" ){$arrRemoved = $v;  }}
print_r($arrRemoved);
function arrayUnique($myArray)
{
    $newArray = Array();
    if (is_array($myArray))
    {
        foreach($myArray as $key=>$val)
        {
            if (is_array($val))
            {
                $val2 = arrayUnique($val);
            }
            else
            {
                $val2 = $val;
                $newArray=array_unique($myArray);
                $newArray=deleteEmpty($newArray);
                break;
            }
            if (!empty($val2))
            {
                $newArray[$key] = $val2;
            }
        }
    }
    return ($newArray);
}

function deleteEmpty($myArray)
{
    $retArray= Array();
    foreach($myArray as $key=>$val)
    {
        if (($key<>"") && ($val<>""))
        {
            $retArray[$key] = $val;
        }
    }
    return $retArray;
}

versuchen, diese kurz & sweet Code -

$array = array (1,4,2,1,7,4,9,7,5,9);
$unique = array();

foreach($array as $v){
  isset($k[$v]) || ($k[$v]=1) && $unique[] = $v;
  }

var_dump($unique);

Ausgabe -

array(6) {
  [0]=>
  int(1)
  [1]=>
  int(4)
  [2]=>
  int(2)
  [3]=>
  int(7)
  [4]=>
  int(9)
  [5]=>
  int(5)
}
<?php
$arr1 = [1,1,2,3,4,5,6,3,1,3,5,3,20];    
print_r(arr_unique($arr1));


function arr_unique($arr) {
  sort($arr);
  $curr = $arr[0];
  $uni_arr[] = $arr[0];
  for($i=0; $i<count($arr);$i++){
      if($curr != $arr[$i]) {
        $uni_arr[] = $arr[$i];
        $curr = $arr[$i];
      }
  }
  return $uni_arr;
}

Hier habe ich eine zweite leere Array erstellt und for Schleife mit der ersten Anordnung verwendet, die Dubletten wird mit. Es wird so viel Zeit wie die Zählung des ersten Arrays laufen. Dann verglichen mit der Position des Arrays mit der ersten Anordnung und abgestimmt, dass sie dieses Produkt bereits oder nicht, durch in_array verwenden. Wenn nicht, dann wird es das Element mit dem zweiten Array mit array_push hinzuzufügen.

$a = array(1,2,3,1,3,4,5);
$count = count($a);
$b = [];
for($i=0; $i<$count; $i++){
    if(!in_array($a[$i], $b)){
        array_push($b, $a[$i]);
    }
}
print_r ($b);

Es kann durch Funktion erfolgen ich drei Funktion Duplikat gibt die Werte aus, die in Array Duplikat sind.

Zweite Funktion Einzel Rückkehr nur die Werte, die einzigen sind Mittel in Array nicht wiederholt und die dritte und volle Funktion Rückkehr alle Werte aber nicht dupliziert, wenn jeder Wert es zu einzelnen konvertieren dupliziert wird;

function duplicate($arr) {
    $duplicate;
    $count = array_count_values($arr);
    foreach($arr as $key => $value) {
        if ($count[$value] > 1) {
            $duplicate[$value] = $value;
        }
    }
    return $duplicate;
}
function single($arr) {
    $single;
    $count = array_count_values($arr);
    foreach($arr as $key => $value) {
        if ($count[$value] == 1) {
            $single[$value] = $value;
        }
    }
    return $single;
}
function full($arr, $arry) {
    $full = $arr + $arry;
    sort($full);
    return $full;
}
$array = array("a" => "moon", "star", "b" => "moon", "star", "sky");

// Deleting the duplicate items
$result = array_unique($array);
print_r($result);

ref: Demo

Ich habe dies getan, ohne eine Funktion verwendet wird.

$arr = array("1", "2", "3", "4", "5", "4", "2", "1");

$len = count($arr);
for ($i = 0; $i < $len; $i++) {
  $temp = $arr[$i];
  $j = $i;
  for ($k = 0; $k < $len; $k++) {
    if ($k != $j) {
      if ($temp == $arr[$k]) {
        echo $temp."<br>";
        $arr[$k]=" ";
      }
    }
  }
}

for ($i = 0; $i < $len; $i++) {
  echo $arr[$i] . " <br><br>";
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top