Viele Variablen miteinander vergleichen...

Apfelkuchen

Mitglied
Hi. Da ich im Moment an meinem Tennis-club system arbeite wollte ich fragen ob mir jemand beim folgenden Problem helfen kann.

Auf der Add-Tournament Seite kommen ziemlich viele Variablen zusammen. spieler1, spieler2 von match1, spieler1,2 von match2, usw usw...

wie könnte ich nun, alle diese Variablen hernehmen (aus einer Runde, zb. Achtelfinale) - also AF1spieler1, AF1spieler2, AF2spieler1, AF2spieler2, usw.....und miteinander vergleichen. Was ich damit erreichen will, ist, dass wenn ein Name doppelt vorkommt, eine Warnung angezeigt wird.. Sprich, die selbe Person kann nicht 2x in einer Runde ausgewählt werden....

Bsp:

AF1
Thomas Muster vs. Bjorn Borg

AF2
Sampras vs. Roddick

AF3
Thomas Muster vs. Federer

danke...
 
Moin, erstelle aus den Variablen einen Array, per [phpf]array_count_values[/phpf] kannst du dann leicht ermitteln, welcher Name öfters vorkommt:
PHP:
<pre>
<?php
$spieler=array('Borg','McEnroe','Lendl','Sampras','Muster','Leconte','Lendl','Borg');
print_r(array_count_values($spieler));
?>
</pre>
 
Moin, erstelle aus den Variablen einen Array, per [phpf]array_count_values[/phpf] kannst du dann leicht ermitteln, welcher Name öfters vorkommt:
PHP:
<pre>
<?php
$spieler=array('Borg','McEnroe','Lendl','Sampras','Muster','Leconte','Lendl','Borg');
print_r(array_count_values($spieler));
?>
</pre>


Danke für deine Hilfe, leider konnte ich das so nicht umsetzen. Anbei mein code:
PHP:
//Halbfinale
$halbinale=array($AS1spieler1,$AS1spieler2,$AS2spieler1,$AS2spieler2);
print_r(array_count_values($halbfinale));
echo "doppelte einträge: ".$halbfinale;

folgende Fehlermeldung erscheint:
"Warning: array_count_values() [function.array-count-values]: The argument should be an array in /tennis/addtournament.php on line 583"
 
Ich könnte mir dafür eine foreach Schleife ganz gut vorstellen.

PHP:
foreach ($array as $anzahl) {
  if ($anzahl > 1) echo 'fehler';
}

Hi ich habe folgendes versucht, aber wahrscheinlich habe ich irgendwo in der syntax einen Fehler... newbie halt.. könnt ihr mal schauen:

PHP:
        //Halbfinale
        $halbfinale=array($AS1spieler1,$AS1spieler2,$AS2spieler1,$AS2spieler2);
        print_r(array_count_values($halbfinale));
        foreach ($halbfinale as $anzahl) {
        if ($anzahl > 1) echo 'fehler';
 
Dir fehlt am Ende das schließende }

PHP:
//Halbfinale
  $halbfinale=array($AS1spieler1,$AS1spieler2,$AS2spieler1,$AS2spieler2);
  print_r(array_count_values($halbfinale));
  foreach ($halbfinale as $anzahl) {
      if ($anzahl > 1) echo 'fehler';  
  }
 
Dir fehlt am Ende das schließende }

PHP:
//Halbfinale
  $halbfinale=array($AS1spieler1,$AS1spieler2,$AS2spieler1,$AS2spieler2);
  print_r(array_count_values($halbfinale));
  foreach ($halbfinale as $anzahl) {
      if ($anzahl > 1) echo 'fehler';  
  }

das habe ich sogar gesehen und behoben, aber denoch geht es nicht. liegt daran, dass mir $anzahl als wert den letzten spielernamen liefert. Ich habe es jetzt in das hier umgearbeitet. Vielleicht kann mir da jemand weiterhelfen:

PHP:
$halbfinale=array($AS1spieler1,$AS1spieler2,$AS2spieler1,$AS2spieler2);
        print_r(array_count_values($halbfinale));
        foreach ($halbfinale as $key => $val) {
          if ($val > 1) echo 'fehler';
           else echo "<br>jack hat den hasen";
        echo "<br>key: ".$key;
        echo "<br>val: ".$val;
        }

Hier bekomme ich zwar noch keine Meldung "fehler", aber dafür spuckt er mir zumindest als $val immer den spielernamen aus. Somit kommt jetzt z.b.:
key: 0, val: sampras
key: 1, val: federer
key: 2, val: sampras
 
Du müsstest array_count_values() auch verwenden, wenn das was werden soll...

Code:
print_r(array_count_values($halbfinale));
dient lediglich der Ausgabe und ändert den Array nicht.

So wird ein Schuh daraus:
Code:
foreach (array_count_values($halbfinale) as $key => $val) {
          echo '<hr>'. $key . ':'.(($val===1)?'OK':'Fehler') ;
        }
 
Zurück