array_unique

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

array_uniqueDédoublonne un tableau

Description

function array_unique(array $array, int $flags = SORT_STRING): array

Prend le tableau d'entrée array et retourne un nouveau tableau sans valeurs dupliquées.

Il est à noter que les clés sont préservées. Si plusieurs éléments comparés sont égaux sous le flags donné, alors la clé et la valeur du premier élément égal seront conservées.

Note:

Deux éléments sont considérés comme égaux si et seulement si (string) $elem1 === (string) $elem2, c.-à-d. lorsque la représentation en chaîne de caractères est identique, auquel cas le premier élément est conservé.

Liste de paramètres

array

Le tableau d'entrée.

flags

Le second paramètre optionnel flags peut être utilisé pour modifier le comportement de comparaison en utilisant les valeurs suivantes :

Drapeau de type de comparaison :

  • SORT_REGULAR - compare les éléments normalement (ne modifie pas les types)

    Note:

    Lors de la combinaison de SORT_REGULAR avec des tableaux mêlant des chaînes numériques et non numériques, l'algorithme de tri puis comparaison peut ne pas placer les éléments égaux côte à côte, ce qui peut laisser des doublons dans le résultat. Utiliser SORT_STRING pour éviter cela.

  • SORT_NUMERIC - compare les éléments numériquement

  • SORT_STRING - compare les éléments comme des chaînes

  • SORT_LOCALE_STRING - compare les éléments comme des chaînes, suivant la locale courante.

Valeurs de retour

Retourne le tableau filtré.

Historique

Version Description
7.2.0 Si flags est SORT_STRING, le tableau retourné est construit en ajoutant les éléments uniques à un nouveau tableau ; auparavant, il s'agissait d'une copie de array dont les éléments non uniques étaient supprimés. Les deux contiennent les mêmes éléments sous les mêmes clés, mais si l'élément ayant la plus grande clé entière fait partie de ceux supprimés, l'index généré pour un élément ajouté au tableau retourné diffère de celui qu'aurait généré array.

Exemples

Exemple #1 Exemple avec array_unique()

<?php

$input = ["a" => "green", "red", "b" => "green", "blue", "red"];
$result = array_unique($input);
print_r($result);

?>

L'exemple ci-dessus va afficher :

Array
(
    [a] => green
    [0] => red
    [1] => blue
)

Exemple #2 Exemple avec array_unique() et les types

<?php

$input = [4, "4", "3", 4, 3, "3"];
$result = array_unique($input);
var_dump($result);

?>

L'exemple ci-dessus va afficher :

array(2) {
  [0]=>
  int(4)
  [2]=>
  string(1) "3"
}

Notes

Note:

Il est à noter que array_unique() ne fonctionne pas avec des tableaux multidimensionnels.

Voir aussi

add a note

User Contributed Notes 35 notes

up
324
Ghanshyam Katriya(anshkatriya at gmail)
11 years ago
Create multidimensional array unique for any single key index.
e.g I want to create multi dimentional unique array for specific code

Code : 
My array is like this,

<?php
$details = array(
    0 => array("id"=>"1", "name"=>"Mike",    "num"=>"9876543210"),
    1 => array("id"=>"2", "name"=>"Carissa", "num"=>"08548596258"),
    2 => array("id"=>"1", "name"=>"Mathew",  "num"=>"784581254"),
);
?>

You can make it unique for any field like id, name or num.

I have develop this function for same : 
<?php
function unique_multidim_array($array, $key) {
    $temp_array = array();
    $i = 0;
    $key_array = array();
    
    foreach($array as $val) {
        if (!in_array($val[$key], $key_array)) {
            $key_array[$i] = $val[$key];
            $temp_array[$i] = $val;
        }
        $i++;
    }
    return $temp_array;
}
?>

Now, call this function anywhere from your code,

something like this,
<?php
$details = unique_multidim_array($details,'id');
?>

Output will be like this :
<?php
$details = array(
    0 => array("id"=>"1","name"=>"Mike","num"=>"9876543210"),
    1 => array("id"=>"2","name"=>"Carissa","num"=>"08548596258"),
);
?>
up
5
Sbastien
4 years ago
Because of PHP comparaisons modalities, you can never distinguish null from others falsy values.
Note the absorbing nature of true and false booleans in mix types array.

<?php

$a = [true, false, null, '', '0', '123', 0, 123];
foreach (['SORT_REGULAR', 'SORT_NUMERIC', 'SORT_STRING', 'SORT_LOCALE_STRING'] as $flag) {
    $a_new = array_unique($a, constant($flag));
    echo "{$flag} ==> ";
    var_dump($a_new);
}

/*

Gives :

SORT_REGULAR ==> array(2) {
  [0]=> bool(true)
  [1]=> bool(false)
}
SORT_NUMERIC ==> array(3) {
  [0]=> bool(true)
  [1]=> bool(false)
  [5]=> string(3) "123"
}
SORT_STRING ==> array(4) {
  [0]=> bool(true)
  [1]=> bool(false)
  [4]=> string(1) "0"
  [5]=> string(3) "123"
}
SORT_LOCALE_STRING ==> array(4) {
  [0]=> bool(true)
  [1]=> bool(false)
  [4]=> string(1) "0"
  [5]=> string(3) "123"
}

*/