Comment réaliser la déduplication des données dans les tableaux PHP ?

王林
Libérer: 2024-04-26 18:51:02
original
1056 Les gens l'ont consulté

Trois méthodes pour dédupliquer les tableaux PHP : utilisez la fonction array_unique() pour supprimer les valeurs en double en fonction des valeurs des éléments et conserver l'ordre des valeurs clés. Utilisez la fonction array_filter() pour supprimer les éléments en double en fonction des conditions d'une fonction de rappel. Utilisez la classe SplObjectStorage pour tirer parti du caractère unique des objets afin de réaliser la déduplication de tableau et de conserver les associations clé-valeur.

如何实现 PHP 数组中数据的去重?

Comment réaliser la déduplication des données dans un tableau PHP

La déduplication de tableau fait référence à la suppression des valeurs en double dans un tableau et à l'obtention d'un nouveau tableau contenant uniquement des valeurs uniques. PHP propose plusieurs méthodes pour réaliser la déduplication de tableaux :

Utilisez la fonction array_unique()

array_unique() 函数

array_unique() 是一个内置函数,专门用于去除数组中的重复值。它根据每个元素的值进行比较,并返回一个仅包含唯一元素的新数组。语法如下:

array_unique(array $array);
Copier après la connexion

示例:

$numbers = [1, 2, 3, 4, 5, 1, 2, 3];
$unique_numbers = array_unique($numbers);
print_r($unique_numbers);
Copier après la connexion

输出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
Copier après la connexion
Copier après la connexion

注意: array_unique() 会保留键值顺序,但如果需要,可以使用 array_values() 函数将保留的键值变为连续的数字。

使用 array_filter() 函数

array_filter() 函数可以根据回调函数的条件将数组中的某些元素移除。它会将满足回调函数返回 true 的元素保留在数组中,而将其他元素过滤掉。

示例:

$numbers = [1, 2, 3, 4, 5, 1, 2, 3];
$unique_numbers = array_filter($numbers, function($value, $index) {
    return array_search($value, $numbers) === $index;
});
print_r($unique_numbers);
Copier après la connexion

输出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
Copier après la connexion
Copier après la connexion

注意: 此回调函数检查每个元素在数组中出现的第一个索引是否与当前索引相同,以确定它是否是一个唯一值。

使用 SplObjectStorage

SplObjectStorage 类是一种更高级的存储对象集合的容器。可以将它用作散列表,其中对象是键,而关联的值是保留的值。由于散列表不允许重复键,因此可以使用 SplObjectStorage 来实现数组去重。

示例:

$numbers = [1, 2, 3, 4, 5, 1, 2, 3];
$unique_numbers = new SplObjectStorage();

foreach ($numbers as $number) {
    $unique_numbers->attach($number);
}

foreach ($unique_numbers as $number) {
    echo $number . "\n";
}
Copier après la connexion

输出:

1
2
3
4
5
Copier après la connexion

注意: 这种方法利用了对象不能重复的特性。SplObjectStoragearray_unique() est une fonction intégrée spécifiquement utilisée pour la déduplication. valeurs dans le tableau. Il compare en fonction de la valeur de chaque élément et renvoie un nouveau tableau contenant uniquement des éléments uniques. La syntaxe est la suivante :

rrreee🎜Exemple :🎜rrreee🎜Sortie : 🎜rrreee🎜Remarque : array_unique() conservera la valeur de la clé dans l'ordre, mais si nécessaire, vous pouvez utiliser la fonction array_values() pour modifier les valeurs clés conservées en nombres consécutifs. 🎜🎜Utilisez la fonction array_filter()🎜array_filter() pour supprimer certains éléments du tableau en fonction des conditions de la fonction de rappel. Il conservera les éléments du tableau qui satisfont au retour de la fonction de rappel true, tout en filtrant les autres éléments. 🎜🎜Exemple :🎜rrreee🎜Sortie : 🎜rrreee🎜Remarque : Cette fonction de rappel vérifie si le premier index de chaque élément apparaissant dans le tableau est le même que l'index actuel , pour déterminer s'il s'agit d'une valeur unique. 🎜🎜Utilisez la classe SplObjectStorage🎜La classe SplObjectStorage est un conteneur plus avancé pour stocker des collections d'objets. Vous pouvez l'utiliser comme table de hachage, où les objets sont les clés et les valeurs associées sont les valeurs conservées. Étant donné que les tables de hachage n'autorisent pas les clés en double, vous pouvez utiliser SplObjectStorage pour implémenter la déduplication de tableau. 🎜🎜Exemple :🎜rrreee🎜Sortie : 🎜rrreee🎜Remarque : Cette méthode profite du fait que les objets ne peuvent pas être répétés. Les clés dans SplObjectStorage ne sont pas uniques car chaque objet a une identité différente. Par conséquent, il peut supprimer efficacement les valeurs en double du tableau. 🎜

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal