Und zwar möchte ich die Schnittmenge aus bestimmten Arrays ermitteln.
Hier erstmal die Daten:
$css['standard']['a'][]['margin'] = '0'; $css['standard']['a'][]['color'] = 'red'; $css['standard']['a'][]['text'] = 'none'; $css['standard']['a'][]['text'] = '!important'; $css['standard']['b'][]['color'] = 'red'; $css['standard']['b'][]['text'] = 'none';
Dazu gibt es noch meine selbstgebauten (und zugegebenermaßen sehr simplen) Funktionen:
function mycomp($data1,$data2) { if($data1 === $data2) { return 0; } else { return 1; } } function mycomp2($data1,$data2) { return 0; }
Wenn ich jetzt folgendes mache
array_uintersect_uassoc($css['standard']['a'], $css['standard']['b'], "mycomp",'mycomp2');
wird die Schnittmenge mit
Array ( [1] => Array ( [color] => red ) [2] => Array ( [text] => none ) )
korrekt (oder besser gesagt: wie gewünscht) ermittelt.
Benutze ich dagegen folgende Daten
$css['standard']['a'][]['margin'] = '0'; $css['standard']['a'][]['color'] = 'red'; $css['standard']['a'][]['text'] = 'none'; $css['standard']['a'][]['text'] = '!important'; $css['standard']['b'][]['text'] = 'none'; //Änderung hier $css['standard']['b'][]['color'] = 'red'; // und hier
kommt nur folgendes heraus
Array ( [1] => Array ( [color] => red ) )
obwohl die Werte die von mycomp() verglichen werden genau die gleichen sind. Lediglich die Schlüssel haben sich verändert, aber das stört mycomp2() herzlich wenig. Also was ist da los? Andere Vergleichsfunktionen dieser Art (z.B. array_uintersect) habe ich auch schon probiert, die liefern allerdings die gleichen unbrauchbaren Ergebnisse.