Bonjour,
Pour faire simple et rapide, je dois comparer des adresses mac sur des ports d'équipements avant et après une opération de maintenance. Un script perl va me chercher ces renseignements et implémente une bdd.
L'interfaçage utilisateur est en php.
J'ai donc ce genre de données possibles pour les @mac:
bien sur, les mac sont normalement tirées de la bdd ;)Code:
1
2
3 $macAvant = explode("/", "/"); $macAvant= explode("/", "AA BB CC 22 22 22/"); $macAvant= explode("/", "AA BB CC 11 11 11/AA BB CC 22 22 22/AA BB CC 33 33 33/");
mais là où je voulais en venir, c'est qu'il peut y avoir 0, 1 ou plusieurs macs sur un même port, d'où le tableau.
Le script perl trie les @mac, ce qui fait que les données de la bdd sont classées alpha-numériquement s'il y a plusieurs mac.
Suite à ça, je vire le dernier item du tableau, qui est toujours vide:
Après l'opération de maintenance, le port peut retrouver toutes ces mac, ou une partie, ou pas du tout :pCode:array_pop($macAvant);
mon tableau $macApres va donc avoir le même type de données que $macAvant
Il se peut aussi que lors de la première prise de mac, il n'y ai qu'une seule mac sur le port, et qu'après l'opération, il y en ait plusieurs.
J'aimerais savoir si au moins une adresse mac est commune dans les 2 tableaux.
J'ai remarqué (et c'est ce qui me dérange) que suivant l'ordre des paramètres, la fonction array_intersect ne ramène pas le même résultat.
Prenons un exemple:
Code:
1
2
3
4
5
6
7
8
9
10
11
12 $macAvant= explode("/", "AA BB CC 22 22 22/"); $macApres = explode("/", "AA BB CC 11 11 11/AA BB CC 22 22 22/"); array_pop($macAvant); array_pop($macApres ); $macDiff1 = array_intersect($macApres , $macAvant); $macDiff2 = array_intersect($macAvant, $macApres ); print "inter macApres macAvant<br />"; print_r($macDiff1); print "count: ".count($macDiff1)."<br />"; print "inter macAvant macApres <br />"; print_r($macDiff2); print "count: ".count($macDiff2)."<br />";
La clé est conservée.Citation:
macAvant :
Array ( [0] => AA BB CC 22 22 22 )
macApres :
Array ( [0] => AA BB CC 11 11 11 [1] => AA BB CC 22 22 22 )
inter macApres macAvant
Array ( [1] => AA BB CC 22 22 22 ) count: 1
inter macAvant macApres
Array ( [0] => AA BB CC 22 22 22 ) count: 1
Y a-t-il moyen de récupérer les valeurs communes sans index?
Merci d'avance,

