# array_udiff_uassoc

(PHP 5, PHP 7, PHP 8)

array_udiff_uassoc — Calcule la différence de deux tableaux associatifs, compare les données et les index avec une fonction de rappel

### Description

array_udiff_uassoc(
array `$array`,
array `...$arrays`,
callable `$value_compare_func`,
callable `$key_compare_func`
): array

Calcule la différence de deux tableaux associatifs, compare les données et les index avec une fonction de rappel.

Notez que les clés sont utilisées dans les comparaisons contrairement à array_diff() et array_udiff().

### Liste de paramètres

`array`

  Le premier tableau.

`arrays`

  Tableaux à comparer contre

`value_compare_func`

  La fonction de comparaison doit retourner un entier inférieur à, égal à, ou supérieur à 0 si le premier argument est considéré comme, respectivement, inférieur à, égal à, ou supérieur au second.

  callback(mixed `$a`, mixed `$b`): int
  Attention

  Retourner des valeurs non-entières à partir de la fonction de comparaison, telles que float, entraînera une conversion interne de la valeur de retour du rappel en int. Ainsi, des valeurs telles que `0.99` et `0.1` seront toutes deux converties en une valeur entière de `0`, ce qui comparera de telles valeurs comme égales.

  Attention

  La fonction de rappel de tri doit traiter n'importe quelle valeur de n'importe quel tableau dans n'importe quel ordre, quel que soit l'ordre dans lequel elles ont été initialement fournies. Cela s'explique par le fait que chaque tableau individuel est d'abord trié avant d'être comparé aux autres tableaux. Par exemple :

  `<?php
  $arrayA = ["chaîne", 1];
  $arrayB = [["value" => 1]];
  // $item1 et $item2 peuvent être l'une des valeurs suivantes : "chaîne", 1 ou ["value" => 1]
  $compareFunc = static function ($item1, $item2) {
  $value1 = is_string($item1) ? strlen($item1) : (is_array($item1) ? $item1["value"] : $item1);
  $value2 = is_string($item2) ? strlen($item2) : (is_array($item2) ? $item2["value"] : $item2);
  return $value1 <=> $value2;
  };
  ?>`
`key_compare_func`

  La comparaison des clés (indices) est effectuée par la fonction de rappel `key_compare_func`. Ce comportement est différent de celui de array_udiff_assoc(), vu que cette dernière utilise une fonction interne pour comparer les indices.

### Valeurs de retour

Retourne un tableau contenant toutes les valeurs du tableau `array` qui ne sont pas présentes dans aucun autre argument.

### Exemples

Exemple #1 Exemple avec array_udiff_uassoc()

`<?php
class cr {
private $priv_member;
function __construct($val)
{
$this->priv_member = $val;
}
static function comp_func_cr($a, $b)
{
if ($a->priv_member === $b->priv_member) return 0;
return ($a->priv_member > $b->priv_member)? 1:-1;
}
static function comp_func_key($a, $b)
{
if ($a === $b) return 0;
return ($a > $b)? 1:-1;
}
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);
$result = array_udiff_uassoc($a, $b, array("cr", "comp_func_cr"), array("cr", "comp_func_key"));
print_r($result);
?>`

L'exemple ci-dessus va afficher :

    Array
    (
        [0.1] => cr Object
            (
                [priv_member:cr:private] => 9
            )

        [0.5] => cr Object
            (
                [priv_member:cr:private] => 12
            )

        [0] => cr Object
            (
                [priv_member:cr:private] => 23
            )
    )

Dans notre exemple, vous voyez que la paire `"1" => new cr(4)` est présente dans les deux tableaux et donc, absente du tableau résultant. Gardez en tête que vous devez fournir deux fonctions de rappel.

### Notes

> Note: Notez que cette fonction ne vérifie qu'une seule dimension d'un tableau multidimensionnel. Vous pouvez, bien sûr, tester une dimension particulière en utilisant par exemple `array_udiff_uassoc($array1[0], $array2[0], "data_compare_func", "key_compare_func");`.

### Voir aussi

- array_diff() - Calcule la différence entre des tableaux
- array_diff_assoc() - Calcule la différence de deux tableaux, en prenant aussi en compte les clés
- array_udiff() - Calcule la différence entre deux tableaux en utilisant une fonction rappel
- array_udiff_assoc() - Calcule la différence entre des tableaux avec vérification des index, compare les données avec une fonction de rappel
- array_intersect() - Calcule l'intersection de tableaux
- array_intersect_assoc() - Calcule l'intersection de deux tableaux avec des tests sur les index
- array_uintersect() - Calcule l'intersection de deux tableaux, compare les données en utilisant une fonction de rappel
- array_uintersect_assoc() - Calcule l'intersection de deux tableaux avec des tests sur l'index, compare les données en utilisant une fonction de rappel
- array_uintersect_uassoc() - Calcule l'intersection de deux tableaux avec des tests sur l'index, compare les données et les index des deux tableaux en utilisant une fonction de rappel séparée