Position actuelle: Accueil> Derniers articles> Comment déboguer le problème de la production incohérente de Array_Diff_assoc ()?

Comment déboguer le problème de la production incohérente de Array_Diff_assoc ()?

M66 2025-05-12

La fonction Array_Diff_assoc () dans PHP est utilisée pour comparer deux tableaux et renvoyer un tableau contenant tous les éléments dans le premier tableau mais pas dans le deuxième tableau. Pendant le processus de comparaison, non seulement la valeur de l'élément est considérée, mais aussi la clé de l'élément est considérée. Cependant, vous pouvez parfois rencontrer des situations où la sortie array_diff_assoc () est incohérente. Cet article explorera comment résoudre ce problème.

Utilisation de base de l'array_diff_assoc ()

L'utilisation de base de la fonction array_diff_assoc () est la suivante:

 $array1 = array("a" => "apple", "b" => "banana", "c" => "cherry");
$array2 = array("a" => "apple", "b" => "banana");

$result = array_diff_assoc($array1, $array2);
print_r($result);

Dans cet exemple, $ résultat sortira:

 Array
(
    [c] => cherry
)

En effet Tout ce qui reste, c'est la clé "C" et la valeur correspondante "Cherry" .

Problèmes d'incohérence des résultats communs

Bien que Array_Diff_assoc () soit un outil très pratique, dans certains cas, sa sortie peut ne pas être cohérente avec ce que vous attendez. Le problème se produit généralement dans les situations suivantes:

1. Les types de données de paires de valeurs clés sont incohérents

array_diff_assoc () compare non seulement les valeurs, mais compare également les types de données des clés lors de la comparaison des tableaux. Si les types de données de clés ou les valeurs d'un élément dans deux tableaux sont différents, array_diff_assoc () les considéreront comme inégaux.

 $array1 = array("a" => "1");
$array2 = array("a" => 1);

$result = array_diff_assoc($array1, $array2);
print_r($result);

Dans cet exemple, bien que les valeurs "1" et 1 se ressemblent, en raison des différents types de données, array_diff_assoc () les considéreront comme inégaux, et le résultat sera:

 Array
(
    [a] => 1
)

2. L'ordre des clés est incohérent

Bien que Array_Diff_assoc () compare les clés et les valeurs des paires de valeurs de clé, cela ne se soucie pas de l'ordre des clés. Même si l'ordre des paires de valeurs clés dans les deux tableaux est différent, les résultats peuvent ne pas être comme prévu.

3. Problème de comparaison d'URL

Dans certains scénarios d'application, vous pouvez être impliqué dans des comparaisons d'URL. Si la partie du nom de domaine de l'URL est différente, array_diff_assoc () peut également sortir de manière incohérente. Par exemple:

 $array1 = array("url" => "http://example.com/page1");
$array2 = array("url" => "http://m66.net/page1");

$result = array_diff_assoc($array1, $array2);
print_r($result);

Dans ce cas, array_diff_assoc () examinera les valeurs "URL" des deux tableaux pour renvoyer un résultat incohérent.

Solution

  1. Assurez-vous que les types de données sont cohérents : avant de faire une comparaison, assurez-vous que les types de données des clés et des valeurs dans les deux tableaux sont cohérents. Si nécessaire, vous pouvez utiliser des fonctions telles que intVal () , strval () ou floatVal () pour unifier les types de données.

  2. URL de comparaison manuelle : Pour les problèmes de comparaison de l'URL, vous pouvez remplacer la partie du nom de domaine de l'URL par le même nom de domaine avant de faire une comparaison. En supposant que vous souhaitez que toutes les URL utilisent m66.net comme nom de domaine, vous pouvez utiliser la méthode suivante: