(PHP 5, PHP 7, PHP 8)
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
$array1,...$arrays,$value_compare_func,$key_compare_funcCalcule 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.
array1Le premier tableau.
arraysTableaux supplémentaires
value_compare_funcLa 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.
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.
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_funcFonction de rappel utilisée pour la comparaison des clés.
Retourne un tableau contenant toutes les valeurs du tableau
array qui sont présentes dans tous les
arguments.
Exemple #1 Exemple avec array_uintersect_uassoc()
<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");
print_r(array_uintersect_uassoc($array1, $array2, "strcasecmp", "strcasecmp"));
?>L'exemple ci-dessus va afficher :
Array
(
[a] => green
[b] => brown
)