Dans PHP, la fonction array_diff_key () est utilisée pour comparer deux tableaux ou plus, les parties de retour du premier tableau qui sont différentes des autres clés du tableau. Il est utilisé sous la forme suivante:
array_diff_key(array $array1, array $array2, array ...$arrays): array
Le résultat renvoyé par cette fonction est: toutes les clés du premier tableau n'apparaissent pas dans d'autres tableaux . Autrement dit, il n'apparaîtra dans le résultat que si une clé n'existe pas dans d'autres tableaux.
Mais si un tableau vide est passé, le comportement de la fonction provoquera des phénomènes spéciaux. Discutons du type de valeur de retour array_diff_key () lors du passage dans un tableau vide.
$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = [];
$result = array_diff_key($array1, $array2);
print_r($result);
Array
(
[a] => 1
[b] => 2
[c] => 3
)
Lorsque le deuxième tableau $ array2 est un tableau vide, array_diff_key () renverra directement toutes les paires de valeurs clés du premier tableau $ array1 . Les raisons sont les suivantes:
Le principe de array_diff_key () est de renvoyer un tableau basé sur la différence de clés.
Si le deuxième tableau est vide, il n'a pas de touches à comparer avec les touches dans le premier tableau. Par conséquent, toutes les clés du premier tableau ne seront pas trouvées dans le deuxième tableau.
Ainsi, Array_Diff_Key () renverra toutes les paires de valeurs clés du premier tableau, car ils sont "différents de tout".
À partir de cet exemple, nous pouvons voir que si le deuxième tableau est vide, array_diff_key () ne fera pas de comparaisons et renverra directement le premier tableau.
Si plusieurs tableaux sont passés, il y a des tableaux vides, le comportement de array_diff_key () est toujours pour renvoyer des clés dans le premier tableau qui ne sont pas dans les autres tableaux. Par exemple:
$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = [];
$array3 = ["a" => 100];
$result = array_diff_key($array1, $array2, $array3);
print_r($result);
Résultats de l'exécution:
Array
(
[b] => 2
[c] => 3
)
Dans cet exemple, la clé "A" dans le premier tableau $ array1 existe dans le troisième array $ array3 , donc "A" n'apparaît pas dans le résultat de retour. Et "B" et "C" ne sont pas trouvés dans $ array3 , ils seront donc conservés.
Lorsqu'un tableau vide est passé à array_diff_key () , tous les éléments du premier tableau seront retournés.
Un tableau vide n'a pas de clés par rapport aux autres tableaux, il est donc considéré que toutes les clés n'apparaissent pas dans d'autres tableaux.
Si plusieurs tableaux sont passés et qu'il y a des tableaux vides, le comportement de Array_Diff_Key () renverra toujours le résultat en fonction du tableau comparé réel.