Je cherche un moyen simple de créer un tableau en php qui ne permettra pas les entrées en double, mais permettra de combiner facilement d'autres ensembles ou tableaux.
Je m'intéresse surtout à l'existence d'une telle fonctionnalité dans la langue, car écrire la mienne ne serait pas difficile. Je ne veux tout simplement pas si je n'en ai pas besoin.
Juste une idée, si vous utilisez les clés de tableau au lieu de valeurs, vous serez assuré qu'il n'y a pas de doublons, cela permet également de fusionner facilement deux "ensembles".
$set1 = array ('a' => 1, 'b' => 1, );
$set2 = array ('b' => 1, 'c' => 1, );
$union = $set1 + $set2;
Vous avez trouvé une solution: array_unique
Ajoutez simplement les éléments à un tableau, puis appelez array_unique
pour supprimer les doublons, ce qui produira le même effet. Le seul inconvénient est que vous devez vous rappeler de l'appeler. Ce serait mieux s'il y avait une classe pour gérer cela, mais c'est très bien pour mes besoins.
Vous pouvez utiliser array_combine pour supprimer les doublons.
$cars = array("Volvo", "BMW", "Toyota");
array_Push($cars,"BMW");
$map = array_combine($cars, $cars);
Dans Laravel, il existe une méthode unique
dans Collection
classe qui peut être utile. De Laravel documentation :
$collection = collect([1, 1, 2, 2, 3, 4, 2]);
$unique = $collection->unique();
$unique->values()->all();
// [1, 2, 3, 4]
J'ai aussi eu ce problème et j'ai donc écrit une classe: https://github.com/jakewhiteley/php-set-object
Comme suggéré, il étend et ArrayObject et permet l'insertion/itération/suppression de valeurs de manière native, mais sans utiliser array_unique()
nulle part.
L'implémentation est basée sur les documents MDN JS Docs for Sets dans JavaScript EMCA 6.