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:
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/");
bien sur, les mac sont normalement tirées de la bdd
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
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 />";
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
La clé est conservée.
Y a-t-il moyen de récupérer les valeurs communes sans index?

Merci d'avance,