Ich vergleiche zwei assoziative Arrays über den Key miteinander.
Wenn bspw. im Element 23 von Array $code abc steht, soll element 23
an das element aus Array $test angehängt werden, bei dem auch abc steht.
Dazu gehe ich momentan jedes Element von $test
mit einer for schleife durch und vergleiche es wiederum innerhalb einer For-Schleife mit jedem Element in $code.
Da ich ca. 1000 ($rownum) Element in $test und 1000 in $code ($rowcode) habe ist das viel zu langwierig.
Habe mir deshalb überlegt, nach erfolreichem
Vergleich das jeweilige Element aus dem 2. Array zu entfernen und somit die Anzahl der Vergleiche zu reduzieren.
Zu erwähnen ist noch, dass der Key für eine Element aus Array 1 mehrfach in Array 2 vorkommen kann, also auch mehrfach angehängt und danach gelöscht werden soll.
Aber sowohl mit unset als auch splice funktioniert es nicht.
Das hat wohl irgendwas mit dem Zeiger zu tun!?
Mit foreach kann ich die elemente zwar löschen, aber erziele keinen performance-gewinn, weil foreach wohl mit einer kopie des arrays arbeitet.
Bsp.:
Element 23 in Array (1) -> test besteht aus
test[0][23][key]=abcd
test[0][23][name]=Franz
Element 24 und 25 aus array (2) -> code sehen folgendermaßen aus
code[0][24][key]=abcd
code[0][24][bruder]=Paul
code[0][25][key]=abcd
code[0][25][schwester]=Lisa
Eigentlich geht es "nur" darum die beiden Elemente aus code zu identifizieren und auch bei großen Arrays mit
möglichst geringem Aufwand (Performance!!!) anzufügen...
Was tun?
PHP-Code:
for ($i=0;$i < $rownum; $i++){
for ($e=0;$e < $rowcode; $e++){
if (current($test[0][$i])==current($code[0][$e])) {
$test[0][$i][]=$code[0][$e];
array_splice($code[0],$code[0][$e],1);
}
}