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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :p
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.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,







Répondre avec citation







Partager