phpbuddy.eu
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 21.03.2005, 13:58   #1
TP-Senior
 
Registriert seit: Nov 2004
jackie_o macht alles soweit korrekt

schnittmenge von 2 arrays aus dem einen löschen


Hallo, hab nochmal so'n schwer zu beschreibendes Problem...

Habe 2 zweidimensonale Arrays und möchte die einzelnen Einträge miteinander verbinden, so ala Tischtennisturnier "jeder mit jedem".
Wenn die Einträge nur in Array1 oder Array2 sind ist alles ok, dann krieg ich das mit zwei verschachtelten for-Schleifen hin.

Nur, wenn nicht, wie krieg ich dann die Duplikate raus? Schnittmenge bilden und die gefundenen aus dem einen Array löschen? Nur wie?
Schnittmenge hab ich schonmal dies gefunden:
PHP-Code:
$result array_intersect($arr1$arr2); 
Nur wie krieg ichs gelöscht, kenne bisher nur slice und pop...

Wär toll, wenn mir noch mal jemand auf die Sprünge helfen könnte.

Viele Grüße
Jackie
jackie_o ist offline   Mit Zitat antworten


Alt 21.03.2005, 14:06   #2
TP-Junior
 
Registriert seit: Oct 2004
magadoo macht alles soweit korrekt
Hmm, weiss zwar nicht ob das so klappt, aber du könntest ja versuchen die beiden arrays mit array_merge() zusammenführen und dann per array_unique() die doppelten Einträge entfernen.
magadoo ist offline   Mit Zitat antworten
Alt 21.03.2005, 14:15   #3
TP-Moderator
 
Benutzerbild von skipperjan
 
Registriert seit: Jan 2005
Ort: Düsseldorf
skipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKE
Das mit den doppelten Einträgen ist so eine Sache, vor Ewigkeiten hab ich mal so ein Lottozahlen Script gebastelt, 6 aus 49, vom Grundproblem her ist es ähnlich, ich checke einfach, ob das Ergebnis im Ergebnis array schon drin ist doer nicht, wenn ja dann zieh ich halt nochmal.

Vielleicht nutzt es dir ein wenig,

so long,

skip

PHP-Code:
session_start();
include(
"datnebankverbindungsgedoense.php");
    
$query "Select count(*) from gewinner";
    
$result mysql_query($query);
    
$anzahl mysql_result($result,0);
    
$alle_nehmen "Select spieler_id from gewinner";
    
$alle_kriegen mysql_query($alle_nehmen);

function 
zufalls_zahlen($n$x$y) {
    
// n Zahlen aus dem Bereich x bis y
    
mt_srand((double)microtime()*1000000);
    
$pool range($x$y);
    for(
$i=0$i<$n$i++) {
        
$number mt_rand($x$y);
        while(!
in_array($number$pool)) {    
            
$number mt_rand($x$y);
        }
        
$ergebnis[] = $number;
        list(
$key) = array_keys($pool$number);
        unset(
$pool[$key]);
    }
    return 
$ergebnis;
}
if(
$gewinner<$anzahl){
$lottozahlen zufalls_zahlen($gewinner1$anzahl);
shuffle($lottozahlen); 
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!

Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
skipperjan ist offline   Mit Zitat antworten
Alt 21.03.2005, 14:16   #4
TP-Senior
 
Registriert seit: Nov 2004
jackie_o macht alles soweit korrekt
@magadoo:
hmmm... und wie mach mit dem einen Array dann das "jeder mit jedem"?

Geändert von jackie_o (21.03.2005 um 14:42 Uhr).
jackie_o ist offline   Mit Zitat antworten
Alt 21.03.2005, 15:57   #5
TP-Junior
 
Registriert seit: Oct 2004
magadoo macht alles soweit korrekt
Tja, das ist die andere Frage

Aber du könntest ja wie du selber gesagt hast, mit zwei Schleifen beide arrays verknüpfen und vor jedem Durchlauf den behandelten Eintrag aus dem zweiten array löschen
magadoo ist offline   Mit Zitat antworten
Alt 22.03.2005, 10:19   #6
TP-Moderator
 
Benutzerbild von skipperjan
 
Registriert seit: Jan 2005
Ort: Düsseldorf
skipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKE
Eben,

schau dir das mal in Ruhe an. Die Idee ist ja die gleiche,

unset($pool[$key]);

Ein korrekt gezogener Wert wird aus dem "pool" der zu verarbeitenden Zahlen gezogen, der pool ist quasi die große Kugel, in der die Lottokugeln rumeinern, wenn eine gezogen ist, ist sie nicht mehr drin..........

So machst du das , mit deinen Tischtennis - Spielern auch und schon sind Doppelziehungen nicht mehr möglich.

so long,

skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!

Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
skipperjan ist offline   Mit Zitat antworten
Alt 22.03.2005, 10:26   #7
TP-Moderator
 
Benutzerbild von skipperjan
 
Registriert seit: Jan 2005
Ort: Düsseldorf
skipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKE
Ach ja,

jeder mit jedem.

Anzahl der Begegnungen bei n Spielern = n x (n-1)

also 10 Spieler, jeder kann gegen 9 andere spielen, macht 90 Spiele.

20 Spieler, jeder 19 Begegnungen, 380 Spiele, das wäre ein verdammt langes Turnier

so long,

skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!

Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
skipperjan ist offline   Mit Zitat antworten
Alt 23.03.2005, 09:59   #8
TP-Senior
 
Registriert seit: Nov 2004
jackie_o macht alles soweit korrekt
@skipperjan: danke für deine posts, aber ich krieg dein Beispiel leider nicht so ganz mit meinem "problem" zusammen.

in meinem Fall ist es so, dass ein benutzer mittels zweier input-felder, was aus der DB holt. Die Ergebnisse aus input_a kommen in Array_a, die Ergebnisse aus input_b in Array_b. Und davon soll dann jeder aus Array_a mit jedem aus Array_b. (Sind nicht so viele, max. 5 pro Array).

Gleiche Eingaben werden rausgefiltert, aber da man nur (mind.) die ersten 3 zeichen eingeben muss, ergibt eine Eingabe von "joh" und "joha" doppelte in beiden Arrs. (z.B. a: johannes, johann, john b:johannes, johann).
Das keiner mit sich selbst spielen muss hab ich geregelt.

Nur das "johannes vs. johann" das gleiche ist wie "johann vs. johannes" und deshalb raus muss, krieg ich leider nicht hin.

Also wenn da noch jemand ne Idee hat...

Falls nicht, is auch nicht soo schlimm, hat der user der so beknackte eingaben macht halt pech und muss sich die hälfte wegdenken [obwohl, schöner wärs anders schon ]

Vielen Dank und Gruß
Jackie
jackie_o ist offline   Mit Zitat antworten
Alt 23.03.2005, 10:23   #9
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Ich habe das mal für Snooker-Spiele realisiert, und da habe ich eine Tabelle benutzt, wo nur die Spieldaten drin sind:

SpielID int 4 NOT NULL auto_increment NULL
Datum date NOT NULL '0000-00-00' NULL
Turnier int 4 NOT NULL '0' NULL
Liga int 4 NOT NULL '0' NULL
Tisch int 11 NOT NULL '0' NULL
Spieler1 int 4 NULL NULL
Spieler2 int 4 NULL NULL
Punkte1 int 2 NOT NULL '0' NULL
Punkte2 int 2 NOT NULL '0' NULL
Highbreak1 int 4 NOT NULL '0' NULL
Highbreak2 int 4 NOT NULL '0' NULL
Modus int 2 NOT NULL '0' NULL
d1 int 2 NOT NULL '0' NULL
d2 int 2 NOT NULL '0' NULL

d1 und d2 sind Ratings vor dem Spiel, um auch wieder den Zustand vor dem Spiel herstellen zu können.

Anhand dieser Tabelle kann man mit geschickten SELECT sich alle erwünschten Infos rausziehen. Die Spielerdaten werden dann einfach per JOIN eingebunden.

Ich habe seinerseits auch ziemlich lange fran rumgeknappst - das schlimmste war die Erstellung von Turnieren in Baumstruktur
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 23.03.2005, 11:19   #10
TP-Moderator
 
Benutzerbild von skipperjan
 
Registriert seit: Jan 2005
Ort: Düsseldorf
skipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKE
So wie ich Jackie jetzt verstehe, ist alles fertig, nur es fehlt dir ein Instrument, Dopplungen zu verhindern, wenn jemand in beide Felder das gleiche einträgt?

War es dass?

Nun, die Lösung ist, jemanden der bereits in array a drinsteht nicht mehr in array b reinzulassen. du kannst ja vo jedem Eintrag einfach prüfen, ob genau dieser Spieler schon in einem der arrays drinsteht.

Dann brauchst du das später auch nicht rauszufiltern.

Sind deine Spielergruppen eigentlich immer gleich groß? Es gibt ja drei Fälle zu berücksichtigen, a = b, a > b, a < b............

so long,

skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!

Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
skipperjan ist offline   Mit Zitat antworten
Alt 23.03.2005, 11:22   #11
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Wenn man wie gesagt die SELECTs geschickt setzt, kann man doch schon viel Vorarbeit leisten. Dazu müsste man sehen, wie die Tabellen sind, die jetzige SQL-Abfrage und was genau drinmstehen soll.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 23.03.2005, 12:03   #12
TP-Senior
 
Registriert seit: Nov 2004
jackie_o macht alles soweit korrekt
ja skipperjan sieht das schon ganz richtig

gruppen können alle 3 fälle haben (a = b, a > b, a < b)

beim einlesen der GET-variablen ins array_b vorher fragen, ob schon in array_b vorhanden klingt gut, muss ich mal probieren, ob ichs hinkriege

@St@eff.en
hab nur eine einzige tabelle mit allen "spielern", abgefragt wird nur input_a und input_b und dann sollen die entsprechenden Paare gebildet werden.

Is eigentlich auch nur ein Experiment und das mit den Turnierspielern um das ganze etwas weniger abstarkt zu machen. Es geht aber nur um die Paarbildung.

Vielleicht wird irgendwann mal ein Spiel draus, wenn ich groß bin

Gruß Jackie
jackie_o ist offline   Mit Zitat antworten
Alt 23.03.2005, 12:10   #13
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
na dann kann ich nur sagen - viel Spass beim Zähneausbeissen

Ich habe das seinerzeit so gelöst, das ich 2 mal dieselbe Tabelle geJOINt habe, sieht halt nicht sehr übersichtlich aus, aber erfüllte den Zweck

SELECT snooker_spiele.SpielID, snooker_spiele.Datum, snooker_spiele.Turnier, snooker_spiele.Liga, snooker_user.username AS S1, snooker_user_1.username AS S2, snooker_spiele.Punkte1, snooker_spiele.Punkte2, snooker_spiele.HighBreak1, snooker_spiele.HighBreak2, snooker_spielmodi.Spielmodus, snooker_spiele.Spieler1, snooker_spiele.Spieler2 FROM ( snooker_spiele INNER JOIN snooker_user ON snooker_spiele.Spieler1 = snooker_user.UserID ) INNER JOIN snooker_user AS snooker_user_1 ON snooker_spiele.Spieler2 = snooker_user_1.UserID INNER JOIN snooker_spielmodi On snooker_spiele.Modus = snooker_spielmodi.SpielmodusID

aber das sieht bei Dir sicher anders aus, vielleicht ist es ja einen Gedanken wert ...
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
schnittmenge von 2 arrays aus dem einen löschen schnittmenge von 2 arrays aus dem einen löschen
« sicherheit bei nur durchsuchbaren DBs | PHP Newsletter An-/Abmeldung »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67