Array nach best. Wert durchsuchen

Naisetsu

Mitglied
Hallo zusammen,

Mir fehlt der eine Input um weiter zu kommen...

Ich habe einen array $zufallszahlen und möchte jeden Wert nur einmal drinnen haben.
Daher soll das array nach dem Wert von $zufall durchsucht werden und wenn bereits vorhanden eine neue Zahl ausgeben.

Wie kann ich einen array nach einem bestimmten Wert durchsuchen?
 
Nein, ich möchte nicht den Wert aus dem array löschen
jedoch habe ich mich wieder einmal selber erwischt, wie ich
zuschnell in Posting erstelle, und erst dann in Manuals und Forum durchsuche :(

Also, ich denke, ich habe meine Lösung gefunden: array_search()

PHP:
<?php
$zufallszahl = rand(0,10); // Zufallszahl setzen
$error[] = $zufallszahl;
if (array_search($zufallszahl, $error); //wenn die Zufallszahl im array vorhanden ist
// hol dir nochmals eine neue Zahl, else etc...
 
?>

Das ganz könnte ich auch in einer schleife lösen:

Solange nicht alle Zahlen von 0-10 im Array enthalten sind (und sofern keine doppelt) mach was...

Danke Gumbo für den Hinweis..
 
Ich bins nochmal, ist doch noch nicht alles geklärt, ich steh auf'm Schlauch:

Ich habe in der Datenbank 10 Eintragungen (Zu jeder ID einen Spruch und Autor)
und lese die dann aus.

Nun zum Code:

PHP:
$zitatID = rand(1,10); // ZufallsID ermitteln
$selectedZitate = array(); //$selectedZitate als array definieren

for ( $x=0; $x<1; $x++ ) // Ziel ist es, nur ein Zitat auszugeben
{
if (!in_array( $zitatID, $selectedZitate)) // wenn die ID noch nicht vorhanden ist
{
$selectedZitate[] = $zitatID; // dann abspeichern 
$ergebnis = mysql_query( "SELECT * FROM $table WHERE ID = $zitatID" ); // Abfrag
$datensatz = mysql_fetch_row( $ergebnis ); // Datensatz zur ID bekommen

//Hier kommt die Ausgabe
print "<hr><b>ID:</b> $datensatz[0]<br><b>Spruch:</b> $datensatz[1]<br><b>Autor:</b> $datensatz[2]<br><hr>";
}
else
{
// Wenn die ID bereits vorhanden ist, soll der Zähler ($x) auf 0 gesetzt werden,
//so somit sollte doch die schleife nochmals beginnen, und eine neue Zahl ausgeben?!
}
}

Problem:

- Die ID wird nicht in $selectedZitate gespeichert
- Es werden daher Zitate doppelt ausgegeben

Was muss ich ergänzen, oder gar im Kopf umstrukturieren, damit's klappt?
 
Du kannst den Zufallszusatz auch direkt in der Abfrage angeben:
Code:
SELECT
        *
  FROM
        $table
  ORDER BY
        RAND()
  LIMIT
        1
 
Ich behaupte mal, dass dies länger Dauert, weil eine Abfrage zur DB gesendet wird, dort den Wert der ID ermittelt und wieder zurück zum script schickt, vergleicht, und das ganze von vorne, wenn vorhanden....nein das ist keine gute Idee...


Das Problem liegt darin, dass ich jeweils einen Spruch aus der Datenbank auslese und dessen ID dann in ein array schreibe. Bei einem refresh (F5 o.ä.) soll dann die neue ID im array gesucht werden, und wenn sie bereits vorkommt wiederum eine andere/neue ID ausgeben solange, bis alle ID's (1-150) im array geschrieben sind!
 
Zuletzt bearbeitet:
Zurück