zufälliger Wert aus array

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • zufälliger Wert aus array

    Hiho,

    habe folgendes Skript vorliegen:

    $verbindung= @mysql_connect("$db_host","$db_user","$db_pass");
    mysql_select_db("$db_name", $verbindung);


    $spielerarray = array();
    $result = mysql_query("SELECT spieler_id, spieler_team_id, spieler_block, spieler_block_tt, spieler_pos,
    spieler_vorname,spieler_name,spieler_off_stärke,
    spieler_def_stärke, spieler_torgefahr, spieler_aggression,
    spieler_verletzung, spieler_kondition, spieler_form
    FROM hm_spieler
    WHERE spieler_team_id='$team2' AND spieler_block>'0'
    AND spieler_status_spiel='1'
    OR spieler_team_id='$team2' AND spieler_block_tt>'0'
    AND spieler_status_spiel='1'
    ORDER BY spieler_block, spieler_block_tt, spieler_pos") OR die(mysql_error());

    while($row = mysql_fetch_array($result,MYSQL_ASSOC))
    {

    $spielerarray[$row['spieler_id']] = $row;
    }


    while(list($spieler_id,$spieler_daten)=each($spielerarray))
    {
    echo "<TR bgcolor=#FFFFFF><font face=Verdana size=2 color=#000000>$spieler_id: ".implode(" | ",$spieler_daten)."</font></TR>";
    }

    Wie kann ich nun einen zufälligen Spieler ansprechen, bei dem aber eine Vorraussetzung erfüllt sein muss, z.B. spieler_block='1'?

  • #2
    hmm. ist ein bisschen doof, aber ich würde zuerst alle spieler mit der entsprechenden bedingung herausfiltern, dieses dann zufallsmischen und den erstbesten nehmen. geht mit den array-funktionen von php sicher prima schnell, so dass man sich einen zweiten db-zugriff sparen kann. z.b. so:
    Code:
    $ziel = array();
    foreach($spielerarray as $spieler) {
      if ($spieler['spieler_block']==1) $ziel[] = $spieler['spieler_id'];
    }
    reset($spielerarray);
    
    srand ((double) microtime() * 1000000);
    $key = array_rand($ziel);
    
    echo $spielerarray[$ziel[$key]];
    nicht getestet... aber so in etwa sollte es gehen.

    Kommentar

    Lädt...
    X