Dans une perspective de performance, quelle est la meilleure façon de vérifier si une matrice associée a et n'a qu'un ensemble donné de clés? Même question, mais d'une perspective de concision de code?
4 Réponses :
Pas sûr de la performance, mais c'est une façon.
Fusionner les clés avec le tableau_Keys et compter les valeurs.
Ensuite, supprimez tout ce qui avait la valeur 2, si quelque chose est laissé, il y a une différence.
$merged = array_diff(array_count_values(array_merge($keys, array_keys($arr))), [2]);
Merci Andreas. Cela ne garantit pas que les touches supplémentaires sont transmises dans $ Ar code>.
Je me suis retrouvé à le faire différemment à chaque fois et que vous voulez vous installer sur une approche et coller avec elle.
Certainement n'a pas pensé à celui-là! :)
Vous pouvez le faire simplement, par
function ArrayKeysAreEqual(array $keys, array $arr) { return array_diff(array_keys($arr), $keys) === array_diff($keys, array_keys($arr)); // return true if matches }
Merci. D'accord, cela fonctionnera, mais sera la même chose que de retourner vrai si les deux sont vides.
Ouais, il retournera vrai si les deux tableaux sont vides.
Vous pouvez utiliser Array_Diff () Code>
sur ceci avec un Compte () code>
chèque.
function checkArrKeys(array $arr, array $keys):bool { return count(array_diff(array_keys($arr),$keys)) === 0 && count($keys) === count(array_keys($arr)); }
Merci Vivek_23, mais ne pensez pas que cela garantira que toutes les clés sont passées.
@ user1032531 n'a pas reçu ce que vous voulez dire. N'importe quel exemple?
Et si $ clés code> a des éléments qui ne sont pas dans
$ arr code>? Pour les documents: compare Array1 contre un ou plusieurs autres tableaux et renvoie les valeurs dans le tableau1 qui ne sont présentes dans aucun des autres tableaux.
@ user1032531 corrigé-le. J'ai initialement négligé que la convention de dénomination est un peu trompeuse.
Ah, mieux. Semblable à mon exemple moyen. Je pense que j'aime mieux le vôtre.
@ user1032531 génial. Si vous souhaitez une performance d'algorithme rapide, vous devez vérifier sur de grands tableaux.
simplement les comparer : Essayez-le en ligne P> P>
Je ne pense pas que ça marche. J'ai initialement prévu de faire la même chose, mais les index seront différents et ne seront donc pas égaux. En espérant que je me trompe parce que je pense que c'est certainement le plus lisible.
J'ai ajouté des exemples que vous pouvez voir en ligne
Cela fonctionne parce qu'ils se trouvent dans le même ordre. Essayez de changer les touches $ code> à
['c', 'b', 'a', 'd'] code>
Oui, c'est pourquoi j'ai mis en œuvre trier () code>