Autor |
Nachricht |
Ragnaroek
Account gelöscht Threadersteller
Ort: -
|
Verfasst Mi 13.12.2006 12:56
Titel [PHP] Array-Problem... |
|
|
Hallo allerseitz...
Habe ein kleines Denk-Problem mit Array's bei PHP. Da meine PHP-Kentnisse ein wenig "eingerostet", daher bekomme ich das so nicht mehr zusammen...
Also:
es geht um ein Quiz. Die Fragen kommen über eine ID aus einer XML-Datei und sollen per zufall ausgewählt werden. Jetzt kommt mein Problem. Es soll natürlich auch keine Frage doppelt kommen. Mein Denkansatz:
Beim erstellen der Zufallszahl wird in einem Array nachgeschaut ob die Zahl schon mal vorhanden war. Wenn ja, wird einfach eine neue Zufallszahl generiert, wenn nicht wird diese Zahl in das Array geschrieben und die Frage ausgegeben. Soweit die Theorie. Nur die Umsetzung macht mir Probleme. Im Grunde brauche ich nur den Teil in dem das Array ausgelesen wird, verglichen und gesdchrieben. Den Rest habe ich schon. Hier das was ich mir aus dem Kopf gedrückt habe was sicherlich falsch ist:
Code: | <?php
$zahlenfeld = array(1, 2, 3, 4);
$i=0;
for ($i =Si; $frage_id==$zahlenfeld[$i]; $i = $i)
{
echo 'Zahl ' . $zahlenfeld[$i] . ' ist schon vorhanden';
$i++;
}
echo 'Zahl ' . $zahlenfeld[$i] . ' ist nich nicht vorhanden und wurde hinzugefügt';
$zahlenfeld[$i] = $frage_id;
?> |
Hat jemand zufällig ein wenig Hilfe für mich?
Danke
Ragna
|
|
|
|
|
Sarky
Dabei seit: 29.06.2002
Ort: Düsseldorf
Alter: 42
Geschlecht:
|
Verfasst Mi 13.12.2006 13:18
Titel
|
|
|
Code: |
do
{
$randomNumber = rand();
}
while (in_array($randomNumber, $occuredNumbers))
$occuredNumbers[] = $randomNumber;
|
|
|
|
|
|
Anzeige
|
|
|
schachbrett
Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht:
|
Verfasst Mi 13.12.2006 13:34
Titel
|
|
|
Oder du baust dir einfach ein Feld mit allen verfügbaren IDs auf:
Code: | $id = Array( 1, 2, 3, 5, ... ); |
schnappst dir eine Zahl aus diesem Array:
Code: | $z = rand( 0, count( $id ) - 1 );
$myid = $id[ $z ]; |
und loescht die gebrauchten IDs:
Code: | unset( $id[ $z ] ); |
|
|
|
|
|
Ragnaroek
Account gelöscht Threadersteller
Ort: -
|
Verfasst Mi 13.12.2006 13:40
Titel
|
|
|
Die idee ist ja noch einfacher...und damit würde das Verlgeichen auch wegfallen...
Prima...danke..
|
|
|
|
|
Ragnaroek
Account gelöscht Threadersteller
Ort: -
|
Verfasst Mi 13.12.2006 14:12
Titel
|
|
|
Hab das jetzt mal so gemacht:
Code: | <?php
$fragen_id = array (1, 2, 3, 4, 5, 6, 7, 8, 9 ,10);
for($i=10; $i >= 0; $i--)
{
$z = rand( 0, count( $fragen_id ) - 1 );
$myid = $fragen_id[$z];
echo ' ' . $myid . '<br />';
unset( $fragen_id[$z] );
}
?> |
eigentlich müssten dann per Zufall alle ID's ausgegeben werden. Nur habe ich auch "leere" ausgaben dazwischen und nicht alle Zahlen erscheinend...hab ich was falsch gemacht?
|
|
|
|
|
tacker
Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht:
|
|
|
|
|
Havok
Dabei seit: 05.08.2005
Ort: Nürnberg
Alter: 43
Geschlecht:
|
Verfasst Mi 13.12.2006 14:38
Titel
|
|
|
Probier's mal hiermit.
Nutzt die eben angesprochene Funktion.
Code: |
$fragen_ids = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Wir brauchen 10 Fragen
for($i = 10; $i > 0; $i--)
{
// Wähle eine der verfügbaren IDs zufällig aus
$index = array_rand( $fragen_ids, 1 );
// Stelle irgendetwas mit der ID an
echo $fragen_ids[$index] . '<br />';
// Lösche die ID aus der Liste
unset( $fragen_ids[$index] );
}
|
Zuletzt bearbeitet von Havok am Mi 13.12.2006 14:39, insgesamt 1-mal bearbeitet
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 13.12.2006 14:48
Titel
|
|
|
Wenn du immer alle zehn ausgeben willst, wäre shuffle wohl angebracht:
Code: | $ids = range(1, 10);
shuffle($ids);
foreach ($ids as $id) {
echo $id."<br />";
} |
|
|
|
|
|
|
|
|
Ähnliche Themen |
Fieses PHP/MySQL-Skript gibt nur "Array Array Array..." aus
Array Problem
if Problem mit array
Problem mit zweidimensionales array
[PHP]Problem mit mehrdimensionalem Array
Problem mit Array bzw .csv-Einbindung
|
|