Werte 2er Arrays auf Redundanz überprüfen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
bedingung
befinden
code
folgendem spieler
formular
frage
funktion
gleichen feld
komischen gedankengang
paar
position
post
sache
schleife
spieler
verschicken
verwenden
vorgefertigten funktionen
wert einzeln vergleichen
-
Hallo,
ich möchte mit
if(array_keys($_POST["X"]) !== array_keys(array_unique($_POST["X"])) and array_keys($_POST["Y"]) !== array_keys(array_unique($_POST["Y"]))) { $Error .= "Es befinden sich Spielerfiguren auf dem gleichen Feld!|"; }
überprüfen, ob sich Spielerfiguren auf dem gleichen Feld befinden. Leider funktioniert das so nicht in allen Fällen. Z.B: Bei folgendem:
Spieler 1: 2,0
Spieler 2: 0,1
Spieler 3: 1,0
Spieler 4: 5,0
Spieler 5: 2,4
Da in jeder Spalte (X und Y) je ein Wert doppelt vorkommt treffen beide Bedingungen zu und er meint, dass sie auf einem gleichen Feld sind, was aber nicht stimmt. Ich könnte das ganze auch mit einer For Schleife durchgehen und jeden Wert einzeln vergleichen, aber ich versuche irgendwie CPU Zeit zu sparen ... Habt ihr da eine gute Idee?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Selbst wenn du keine for-Schleife benutzt, eine andere Funktion wird, wenn sie das so erledigt, selbst wohl auch eine verwenden.
Sowieso finde ich es einen komischen Gedankengang, die Sache so zu kösen, wie du es möchtest.
Denn $_POST ist ein Array. Du überprüfst,w enn ich das richtig verstehe einen einzelnen Postwert und da Frage ich mich doch, wie du es geschafft hast einen Array über POST zu verschicken.
Es wäre also dringend notwendig zu erfahren, wie du die Figurenpositionen speicherst. Ich seh da nämlich nicht durch.
Beitrag zuletzt geändert: 1.5.2010 16:04:26 von reimann -
reimann schrieb:
Selbst wenn du keine for-Schleife benutzt, eine andere Funktion wird, wenn sie das so erledigt, selbst wohl auch eine verwenden.
Sowieso finde ich es einen komischen Gedankengang, die Sache so zu kösen, wie du es möchtest.
Denn $_POST ist ein Array. Du überprüfst,w enn ich das richtig verstehe einen einzelnen Postwert und da Frage ich mich doch, wie du es geschafft hast einen Array über POST zu verschicken.
Es wäre also dringend notwendig zu erfahren, wie du die Figurenpositionen speicherst. Ich seh da nämlich nicht durch.
Die Positionen werden folgendermaßen gespeichert:
$_POST['X'][0] == Erste X Position
$_POST['Y'][0] == Erste Y Position (Die zugehörige zur ersten X Position)
...
$_POST['X'][16] == 17te X Position
$_POST['Y'][16] == 17te Y Position (Die zugehörige zur 17ten X Position)
So kann ich z.B. mit einer For Schleife und $i durch dieses Konstrukt durch-iterieren. Klar wird auch eine der altenativen Funktionen, aus denen ich die Lösung haben möchte, irgendwie per For-Schleife durchnavigieren, allerdings sind die vorgefertigten Funktionen um ein Vielfaches schneller. Daher möchte ich sie benutzen.
Zusammenfassung: $_POST['X'][$i] in Verbindung mit $_POST['Y'][$i] darf nicht ein zweites Mal vorkommen. Wie überprüfe ich das OHNE for Schleife und nicht mit meiner "Lösung" dort oben, die nur ansatzweise funktioniert? -
nikic schrieb:
Ich denke es wäre deutlich klüger dein Formular zu ändern.
Also auf
$_POST[0]['X'] und $_POST[0]['Y'] Paare. Damit hast du X und Y zusammen und kannst viel einfacher weiterarbeiten.
Kann ich nicht machen, ich müsste 99% meines Skriptes umbauen und das wäre zu aufwendig. Es muss auch irgendwie so gehen ... Nur leider finde ich keine Möglichkeit. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage