2 Tabellenspalten mit der UserID Kombinieren

Marius Heil

Erfahrenes Mitglied
Hi,

ich besitze in PHP ein 2dimensionales Array in dem folgende Informationen gespeichert sind:
ID; UserID; GegnerID; Geld; Punkte; etc...
Nun hab ich davon eine gerade Anzahl, zb 6 Stück. Jetzt mag ich ein neues Array generieren welches in einer Zeile folgendes stehen hat:
ID; UserID; GegnerID; GeldUser; GeldGegner; PunkteUser; PunkteGegner; ....
Hierzu muss ich zu jedem Array das passende Gegenstück finden (Jede Zeile hat hierbei bereits die Gegner ID Eingetragen, ich muss nur die richtige finden.)

Wie gestalte ich das so einfach wie möglich?
Ich mag nur ungern mit zig Unterschleifen und großartigen Suchfunktionen arbeiten, das sollte sich Mathematisch eigentlich gut läösen lassen, ich steh allerdings gerade auf dem Schlauch.

Marius
 
Probier mal Folgendes:
PHP:
$newArray = array();
while( $user = array_shift($array) ) {
	foreach( $array as $key => $gegner ) {
		if( $user['GegnerID'] == $gegner['UserID'] && $user['UserID'] == $gegner['GegnerID'] ) {
			$newArray[] = array(
				'ID'           => $user['ID'],
				'UserID'       => $user['UserID'],
				'GegnerID'     => $gegner['UserID'],
				'GeldUser'     => $user['Geld'],
				'GeldGegner'   => $gegner['Geld'],
				'PunkteUser'   => $user['Punkte'],
				'PunkteGegner' => $gegner['punkte'],
				// …
			);
			unset($array[$key]);
			break;
		}
	}
}
Wenn die Daten aus einer Datenbank kommen, könntest du natürlich auch schon bei der Abfrage die Daten zusammenbringen.
 
Hi, das wäre sicher möglich, das Problem ist aber, dass ich user und gegner nicht in 2 unterschiedlichen Arrays hab. Mein Problem ist, das hab ich vergessen zu erwähnen, dass ich alles in einem hab, somit häte ich bei so ner Schleife am Ende 2 identische Zeilen bei denen nur User und Gegner gegeneinander vertauscht sind. Toll wäre eine Funktion, die mir ein Arrayelement einfach entfernt, aber mit unset lässt er mir eine Lücke im Array. Gibts da irgendwas mitdem ich einfach ein Arrayelement killen kann und dann die Indexe eins nach unten verschoben bekomm?
 
Aber mein Vorschlag macht doch genau das: wenn der Gegner gefunden wurde, wird er aus dem Array genommen. Ich hab den Algorithmus noch etwas verändert, so dass UserID und GegnerID in beiden Datensätzen identisch sein muss.
 
Äh, sorry, da bin ich gestern wohl nur etwas schlampig durch :D
Dank dir vielmals, das bau ich gleich ein. Bin nämlich grad dabei ein Turniersystem zu programmieren, ist fast fertig, aber die letzten Berechnungen und Überlegungen sind etwas komplizierter, da werd ich noch was zu programmieren haben.

Marius
 
Zurück