Difference between array_udiff_assoc() and array_diff_assoc()
- array_udiff_assoc(): Compares the DATA with the user supplied callback function
- array_diff_assoc(): Compares the INDEX with the user supplied callback function
(PHP 5, PHP 7, PHP 8)
array_udiff_assoc — Calcule la différence entre des tableaux avec vérification des index, compare les données avec une fonction de rappel
Calcule la différence entre des tableaux avec vérification des index, compare les données avec une fonction de rappel.
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_assoc($array1[1], $array2[1], "compare_func");
.
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.
array_udiff_assoc() retourne un tableau contenant
toutes les valeurs de array
qui ne sont présentes
dans aucun des autre arguments.
Notez que les clés sont utilisées dans les comparaisons contrairement à
array_diff() et array_udiff().
La comparaison des données est effectuée en utilisant une fonction
de rappel fournie par l'utilisateur, data_compare_func
.
Ce comportement est différent de celui de array_diff_assoc()
qui utilise une fonction de comparaison interne.
Exemple #1 Exemple avec array_udiff_assoc()
<?php
class cr {
private $priv_member;
function cr($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;
}
}
$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_assoc($a, $b, array("cr", "comp_func_cr"));
print_r($result);
?>
L'exemple ci-dessus va afficher :
Array ( [0.1] => cr Object ( [priv_member:private] => 9 ) [0.5] => cr Object ( [priv_member:private] => 12 ) [0] => cr Object ( [priv_member: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.
Difference between array_udiff_assoc() and array_diff_assoc()
- array_udiff_assoc(): Compares the DATA with the user supplied callback function
- array_diff_assoc(): Compares the INDEX with the user supplied callback function
The example #1 can be modified (PHP 7 or higher) by using Spaceship operator (<=>):
<?php
//…
static function comp_func_cr($a, $b)
{
return $a->priv_member <=> $b->priv_member;
}
//…
?>