Maison  >  Article  >  développement back-end  >  Pourquoi `array_diff_assoc()` inclut-il des lignes communes lors de la comparaison de tableaux 2D ?

Pourquoi `array_diff_assoc()` inclut-il des lignes communes lors de la comparaison de tableaux 2D ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 06:06:02803parcourir

Why Does `array_diff_assoc()` Include Common Rows When Comparing 2D Arrays?

Filtrer les lignes d'un tableau 2D à l'aide d'un autre tableau

Vous disposez de deux tableaux 2D et avez l'intention d'utiliser array_diff_assoc() pour identifier les lignes uniques dans le premier tableau qui ne sont pas présents dans le second. Cependant, vous rencontrez un problème où les lignes communes sont incluses dans le résultat.

Le problème vient de la façon dont array_diff_assoc() compare les valeurs. Il effectue une comparaison de chaînes stricte, ce qui signifie que les valeurs doivent être identiques en type et en valeur pour être considérées comme égales. Dans l'exemple donné :

<code class="php">$array1 = [
    [12 => 'new q sets'],
    [11 => 'common set']
];

$array2 = [
    [11 => 'common set']
];</code>

Lorsque array_diff_assoc($array1, $array2) est appelé, la représentation sous forme de chaîne des deux tableaux est "Array". Ainsi, la différence est détectée en fonction de la ligne supplémentaire dans $array1 ([12] => 'new q sets'). Par conséquent, la ligne commune ([11] => 'common set') est incluse dans la différence.

Pour résoudre ce problème, envisagez d'utiliser une approche de comparaison différente. Si les données des tableaux sont numériques ou peuvent être converties en numériques, vous pouvez utiliser array_diff_uassoc(), qui vous permet de spécifier une fonction de comparaison personnalisée. Alternativement, vous pouvez filtrer manuellement les lignes en parcourant les deux tableaux et en vérifiant l'égalité des valeurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn