Dans PHP, Array_Diff () est une fonction très pratique pour comparer deux tableaux ou plus et des valeurs de retour qui existent dans le premier tableau mais pas dans d'autres tableaux. Lorsque nous traitons des tableaux de chaînes contenant des caractères spéciaux (tels que @ , # , % , &, etc.), nous pouvons également utiliser cette fonction pour implémenter facilement la comparaison des ensembles différentiels.
Cet article présentera l'utilisation de base de Array_Diff () et utilisera des exemples pour montrer comment gérer les tableaux de chaînes contenant des caractères spéciaux.
array_diff(array $array1, array ...$arrays): array
Cette fonction compare $ array1 avec un ou plusieurs tableaux suivis et renvoie une valeur qui n'existe que dans $ array1 et n'apparaît pas dans d'autres tableaux.
Remarque: La comparaison est basée sur des valeurs et utilise des comparaisons lâches (==) et ne compare pas les noms de clés.
Supposons que vous ayez deux tableaux avec le contenu suivant:
$array1 = ['apple', 'banana', 'cherry@', 'date#', 'egg&'];
$array2 = ['banana', 'date#', 'fig$', 'grape'];
Vous voulez découvrir les éléments qui existent dans $ array1 mais qui n'existent pas dans $ array2 , même s'ils contiennent des caractères spéciaux.
Vous pouvez utiliser Array_Diff () directement, car PHP ne fait pas de traitement spécial pour les caractères spéciaux lors de la comparaison des chaînes et peut toujours les comparer normalement.
<?php
$array1 = ['apple', 'banana', 'cherry@', 'date#', 'egg&'];
$array2 = ['banana', 'date#', 'fig$', 'grape'];
$result = array_diff($array1, $array2);
echo "Résultats différentiels:\n";
print_r($result);
// Si vous souhaitez générer l'un de ces éléments de différence URL Formulaire de paramètre de requête:
$queryString = http_build_query(['items' => array_values($result)]);
echo "\nVous pouvez utiliser le lien suivant pour accéder à la page de résultat de la requête:\n";
echo "https://m66.net/show_diff.php?$queryString";
?>
Le résultat de la sortie est:
Résultats différentiels:
Array
(
[0] => apple
[2] => cherry@
[4] => egg&
)
Vous pouvez utiliser le lien suivant pour accéder à la page de résultat de la requête:
https://m66.net/show_diff.php?items%5B0%5D=apple&items%5B1%5D=cherry%40&items%5B2%5D=egg%26
Les caractères spéciaux n'affectent pas le fonctionnement de Array_Diff () .
Si vous devez faire face aux comparaisons avec les différences de cas, vous pouvez d'abord traiter uniformément les éléments du tableau (comme l'utilisation de strtolower () ).
Si vous obtenez un tableau de chaînes à partir de l'entrée de l'utilisateur, n'oubliez pas de faire le filtrage de base et d'échapper pour éviter les attaques d'injection et autres problèmes.
Comparez deux ensembles de données à partir de différentes sources (telles que la base de données et les données téléchargées par l'utilisateur).
Identifier les enregistrements de données non asynés.
Implémentez la fonction de filtrage des mots clés, recherchez le contenu d'entrée qui n'a pas été couvert par la bibliothèque de vocabulaire filtrée, etc.